正则表达式(regular expression) 在Perl 里面通常也叫模式(Pattern). 正则表达式是用来匹配或不匹配某个字符串是否符合特定字符串模板的,也可以实现字符串的替换.
Perl 的正则表达式语法非常灵活, 可以借助于内置变量$_ 进行简化, 也可以借助于m符号来自定义匹配定界符.
所谓元字符,就是指在正则表达式中具有特殊含义的字符。当元字符想表示其本身时, 需要借助于反义字符.
元字符含义实例.匹配任意字符a.b, 可匹配aab, abb, 不匹配ab, accb*标识前面字符出现0~n次ab*d, 可匹配ad, abd, abbd, 不可匹配aed+标识签名字符出现1~n次ab+d, 可匹配abc, abbd, 但不可匹配ad, aed()模式分组, 可对模式进行组合多次匹配a(bc)+d, 可匹配abcd, abcbcd 等|表示或, 笔者通常会与() 组合使用a(b[]匹配[]中的任一一个字符a[bce]d, 只可匹配abd, acd, aed[] 中的-与[] 配合使用, 属于[]对连续字符的简写模式a[1-3]b, 只匹配a1b, a2b, a3b[] 中的^表示[]匹配的反义, 即不匹配[]中的任意字符[^0-9], 匹配非数字\反义字符,取消元字符的反义a\.b, 匹配a.b\n引用捕获组, n 为数字1, 2, 3…([a-d])([0-9]-\2\1, 匹配a0-0a, b2-2b 等\g{n}引用捕获组, n为数字, 可为负数 …,-2,-1,0,1,2…(a-d)(0-9)-\g{-1}\g{1}, 匹配a0-0a, b2-2b 等模式修饰符可以组合,不分先后.
修饰符含义示例i忽略大小写/ab/s, 可匹配ab,AB, Ab, aBs默认元字符.无法匹配换行符\n, 添加s修饰后可匹配换行符/a.b/s,可匹配aab, a\nbx允许模式中添加空白符可在模式中任何位置添加任意多个空白符,增加模式的可读性. 但是需要注意的是,匹配空白符需要使用\sa使用ASCII 匹配u使用Unicode 匹配对于出现批量比较高的正则表达式分组, Perl 提供了简写模式. 但是使用简写模式时需要注意使用的编码模式时ASCII 码还是Unicode 编码.
锚点符号含义\s匹配任意空白符,可匹配空格符,换行符,水平制表符, 换页符, 回车符\d匹配数字0-9\w匹配任意单个字符, ASCII码方式匹配[a-zA-Z0-9_], Unicode模式可匹配更多\R匹配断行符, 匹配\r\n 或 \n\W反义简写, 等价于 [^\w]\D反义简写, 等价于 [^\d]\S反义简写, 等价于 [^\s]对于正则匹配, 判断结果只有两种,要么是匹配,要么是不匹配.
返回空: 不匹配返回1: 匹配 $str="hello,wolrd"; $has_x = $str =~ /x/; $has_o = $str =~ /o/; # 输出结果: has_x:, has_o:1 print "has_x:$has_x, has_o:$has_o\n";