正则表达式
序列
要匹配序列abba,写在两个斜线之间。
$_ = "yabba dabba doo";
if (/abba/){
print "It matched!\n";
}
yabba dabba doo
一次匹配成功,匹配操作符就返回真。若模式中有括号,则会返回错误消息。//
可以匹配所有字符串。
# practice
while (<STDIN>){
chomp;
if (/fred/){
print "\tmatched!\n";
}
else {
print "\tDoesn't match!\n";
}
}
通配符
**.**可以匹配除换行符外任意单个字符。
匹配点或\需转义,\N和.效果一样。
重复操作符
?意味着前一个字符可以出现一次或不出现。
*前一个字符可以出现无数次,也可以一次都不出现。
/B.*m/
寻找以B开头,以m结尾的字符串。
+前一个字符可以匹配一次或多次。
匹配具体次数可以写在{}中。
{2,3}重复两次以上三次以内。
()利用反向引用重复匹配找到的字符
/(.)\1/
$_ = "yabba dabba doo";
if (/y(....) d\1/){
print "It matched!\n";
}
\g{N},其中g表示分组,N就是原来的数字编号。
择一匹配
模式中的竖线字符|,表示则以匹配,要么左侧部分匹配要么右侧部分匹配。
字符集
[abcwxy]某个字符是这7个字符中的任意一个,就算匹配成功。可用连字符指定字符范围。[a-ce-z]。像[a-zA-Z]这样的字符集可以匹配所有的英文大小写字母。[0-9]可以匹配任意一个数字。
^表示排除,[^def]
排除def字符。
/i修饰可进行大小写无关的匹配
/yes/i
其他的下次再写