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";
}
}