定义:正则表达式是一种字符串模式,可用来和字符串进行匹配。匹配可能成功,也可能失败。许多UNIX命令,包括grep, sed, awk, ed, vi, emacs都有正则表达式的功能。Perl也有这种功能。Python也具有这种功能。
简单示例:
例如:
grep abd readme.file > result.tx t
则Perl中,写成
if(/abc/)
{
print $_;
}
在Perl中,正则表达式用斜线标记,以代表斜线之间的内容是个正则表达式。当表达式北斜线包围时,Perl会拿$_和它作比较,以判断条件的真假。
while(<>) {
if (/abc/) {
print $_;
}
}
这个程序片断能读入某文件的所有内容,并进行匹配。
grep “ab*c” readme.file > result
while( <> )
{
if (/ab*c/) {
print $_;
}
}
以上程序片断表示以a开头,后面跟0个以上的b,最后以c结尾。
替代运算符以s字母开头,跟正则表达式,再跟替代的运算符号。
s/ab*c/def/
变量是$_会跟正则表达式(ab*c)做比较。进行匹配。
类型:一个“正则表达式”就是一种类型pattern。分为单字符类型和多字符类型。
单字符类型:单字符类型是最常见和最常用的类型。如a。单字符类型”.”能跟除换行符号(/n)的任何字符匹配。如
/a./
会和任何长度为二,且开头是a的字符串匹配。除了”a/n”外。
字符类:(character class),写法是左右两个中括号([]),内放字符。即字符串对应此类型的地方,若出现唯一一个符合括号中列出的字符,就算符合。
/[abcde]/
/[aeiouAEIOU]/
若在中括号中放[或者],则需要在前面加反斜杠。如果想表示一段范围,则可以用破折号(dash-)连接。想表示破折号,则前面也必须加反斜杠。
[0123456789]
[0-9]
[0-9/-]
[a-zA-Z]
也可以用“反例”表示字符类别,只要在原来的写法前加上“^”即可。此种类型的意思是任何不在此类别内的单一字符才算上匹配。
[^0-9]
[^aeiouAEIOU]
[^/^]
预定义的字符类别
字符 | 类别 | 反例 |