用m//進行匹配:
m//與//相同,/爲匹配的邊界符,但是m//的邊界符可以用別的符號代替。
模式匹配修飾符:
在邊界符後面加特定字母,表示某種規則,可以組合使用,沒有順序。
/i | 與大小寫無關 |
/s | 符號“.”能匹配任何字符(包括換行符) |
/x | 在匹配中允許加入空白符(方便看) |
/a | 字符解釋:採取ASCII方式 |
/u | 字符解釋:採取Unicode方式 |
/l | 字符解釋:本地化語言 |
錨位:
定義開頭或結尾固定字符或單詞。
\A | 匹配開頭字符 |
\z | 匹配末尾字符,大寫Z表示後面允許有換行符 |
\b | 匹配任何單詞的首位,一組連續的\w字符開頭或結尾 |
另一種方式:^行首,$行末
綁定操作符:
=~ ——用右邊的模式匹配左邊的字符串
模式中的內插:
例:my $what = "larry"; if(/\A($what)/) { ... }
捕獲變量:$數字
捕獲變量形如:$1、$4,它和反向索引\1、\4差不多,不同的是反向索引是模式匹配期間得到的結果,捕獲變量則是模式匹配後對得到的補貨內容的索引
捕獲變量只應該在捕獲成功時使用,否則會得到上一次模式匹配的捕獲內容。
不捕獲圓括號:
(?: ) —— 表示括號內容不被捕獲,不佔用位置。
捕獲標籤:
形式:(?<標籤名>內容)
捕獲:$+{標籤名}
反向引用:\g{標籤名}
通用量詞:
除了+、*、?以外,還可以規定出現次數。
{n} ——出現n次
{n,m}——出現n到m次
{n,} ——出現n次以上
正則表達式優先級(由高到低):
圓括號(分組或捕獲) | (...)、(?:...)、(? |
量詞 | a*、a+、a?、a{n,m} |
錨位和序列 | abc、^、$、\A、\b、\z、\Z |
擇一豎線 | a|b|c |
原子 | a、[abc]、\d、\1、\g{z} |