1、正则表达式匹配的是一个模式,只分为匹配和不匹配两种。
2、如果模式匹配对象是“$_”,只用把模式写在/ /之间即可,如:/abc/
3、元字符:.
点号是任何单字符的通配符,换行(\n)除外
4、量词
*:表示0到无穷次
+:表示1到无穷次
5、圆括号
用来分组,支持反向引用\1、\2,如:/(.)\1/
perl 5.10支持新的反向引用:\g{N}#N可用负数表示相对位置
6、择一匹配:|
如:(a|b)
7、字符集[],如:[A-Za-z]
简写:\d:数字;
\w:单词(字母、数字、下划线);
\s:换行、分页、制表、回车、空格(\n\f\t\r )
\h:匹配横向空白,[\t ]
\v:匹配纵向的空格,等效于 [\f\n\r]
\R:匹配任何类型的断行
8、反义简写
\D、\W、\S:匹配相应小写版本以外的字符
[\d\D]:表示任何数字和非数字,可以匹配任何字符
9、模式匹配操作符的写法
m//、m{}、m()、m<>、m%%等
使用不同的定界符可以提高代码可读性:/^http::\/\// = m%^http://%
10、可选修饰符(可以组合使用,如:m{}isx)
/i:大小写无关的匹配
/s:匹配任意字符,使 . 匹配换行符
/x:可以在模式中加入任意空白和注释
11、锚位
^:开始锚位,标识一个字符串的开头
$:结束锚位,标识一个字符串的结尾
\b:单词边界锚位,用于匹配任何单词的首尾,可以单独使用
12、绑定操作符
默认匹配的是 $_ ,绑定操作符可以指定要匹配的字符串,如:$word =~ /abc/
13、模式串中的内插
如:$what = "larry"; if(/{$what}*/){}
14、捕获变量
正则表达式处理的结果可以被捕获,每个括号都被捕获,依次为:$1、$2、$3
捕获变量的有效期到下次成功捕获新的变量为止。
不捕获模式:(?:abc)
命名捕捉:(?<LABEL>PATTERN),如:m/(?<name1>\w+)(and|or)(?<name2>\w+)/;在5.10版本之后可以使用,反向引用可以改为:\g{LABEL}
自动匹配变量:$`、$&、$':依次为匹配字符串之前的内容、匹配字符串、匹配字符串之后的内容
15、通用量词
{}:括号内指定重复的次数,如:(a{3,15})、(a{5,})
16、优先级
圆括号:()、量词:*/+/?/{m,n}、锚位和序列:^/$、择一:|、元素:a/[abc]/\d/\l
17、模式测试程序
while(<>){
chomp;
if(/YOUR_PATTERN/){
print "Matched: |$`<$&>$'|\n";
}else{
print "no matched\n";
}
}