Perl正規表示式

2021-06-19 01:03:46 字數 2259 閱讀 9746

元字元:

元字元的含義是具有特殊含義的字元,即為元字元,元字元包括'.',點號能夠匹配所有的單字元,但是換行字元除外'\n',

簡易量詞

記載匹配正規表示式的時候有些需要重複的字元或者字串,我們在表示這種重複的形式的時候,即是量詞,我們知道的量詞有'+'表示至少重複一次,'*'表示重複一次或者一次

以上,'?'指的是重複一次或者一次也沒有

模式分組

我們使用小括號來作為乙個單元來進行匹配,例如/(fred)*/即是檢測在$_中是否包含了fred字串或者沒有fred字串,不管怎麼說,fred都是作為乙個整體存在的

$_="a1bbd";

#該正規表示式的含義是匹配$_中字元'b'和'a'之間相隔乙個字元,或者沒有,重點是有字元的話必須是乙個

if(/a.b/)

if(/a.*b/)#該正規表示式的含義是a和b之間有或者沒有字元都行,之間字元的數量,和字元是什麼都沒關係

if(/a.+b/)#該正規表示式的含義是a和b之間必須有乙個或者乙個以上字元,該字元是什麼沒關係

if(/a.?b/)#該正規表示式的含義是a和b之間必須有乙個字元或者沒有字元

反向引用

我們能夠使用反響引用圓括號中匹配的文字,即所謂反向引用,而"\1","\2"即是反向引用的寫法

$_="abba";

if(/(.)\1/)

而\1則是標明需要匹配連續出現的兩個字元,如果沒有則匹配失敗

反向引用不必一定在圓括號的後面可以是

$_="yabba dabba doo";

if(/y(....) d/1)

這樣就會匹配在y後面的4個非回車字元,是否在d之後還會重複一遍,注意匹配的只是圓括號中的4個非回車字元

出了這樣我們還可以巢狀使用反向引用,\2 \1就是這意思

$_="yabba dabba doo";

if(/y(.)(.)\2\1/)#這樣匹配的就是abba

print "it matched";

這樣裡面的(.)\2意思也是重複一遍,但因為是在\1的裡面所以使用了\2

$_="yabba dabba doo";

if(/y((.)(.)\3\2) d\1/)#這樣匹配的是yabba dabba

print "it matched4\n";

}#單如果在反向引用的後面需要加上數字怎麼辦?比如

$_="yaa2";

if(/y(.)\12/)#我想匹配的是yaa2,而不是第十二組

print "it matched5\n";

#解決問題的思路就是使用g來代替1

if(/y(.)\g2/)

print "it matched6\n";

}擇一匹配

$_="john or betty";

if(/john (and|or) betty/)

print "it matched1\n";#必須匹配的是john and betty 或者john or betty

}if(/john( +|\t+)or/)

字符集

字符集指的是遺傳可能出現的字元集合,通過寫在方括號內來表示,只是匹配單個字元,但可以是字符集中的任何乙個,例如字符集

[abcwxyz],會匹配這7個字元中的任何乙個雖然這樣也是一樣的[a-cw-z],

$_="the hal-9000 requires authorization to continue";

if(/hal-[0-9]+/)

print "it print string that some model of hal-compute";

}但有時候在指定字元以外的字元會比指定字符集以內的字元更容易可以使用^表示出去這些字元以外[^abc]也就是說出去abc以外的字元才行

字符集簡寫

任意數字的字符集[0-9]可以被簡寫成\d,因此上面關於hal-的模式可以匹配成/hal-\d/

[a-za-z0-9_]是使用\w來進行簡寫的,如果單詞中只含有數字,字母和下劃線的話,可以使用\w

\s簡寫擅長處理空白,它相當於[\f\t\n\r]包括5中空白的字符集:換頁,製表,換行,及空格我們一般使用\s*來匹配任意數量的空白

還有就是\h簡寫匹配的是橫向空包,也就是[\t ]水平製表符和空格

\v是縱向空白的匹配,[\f\n\r]

\r能夠匹配任何型別的斷行

Perl 正規表示式

正規表示式文中列表 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個後向引用 或乙個八進位制轉義符。匹配輸入字串的開始位置。如果設定了 regexp 物件的multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了 regexp 物件的multiline 屬性...

perl 正規表示式

匹配 m 還可以簡寫為 略去 m 替換 s 轉化 tr 這三種形式一般都和 或 搭配使用 其中 表示相匹配,在整條語句中讀作 does,表示不匹配,在整條語句中讀作 doesn t 並在左側有待處理的標量變數。如果沒有該變數和 操作符,則預設為處理 變數中的內容。舉例如下 str i love pe...

Perl正規表示式

b 匹配單詞邊界處的空字元 b 匹配非單詞邊界處的空字元 匹配單詞開頭處的空字元 匹配單詞結尾處的空字 a 匹配絕對行首,換句話說,就是輸入內容的開頭 z 匹配絕對行尾,換句話說,就是輸入內容的絕對尾部 z 匹配絕對行尾或絕對行尾換行符前的位置,換句話說,就是輸入內容的尾部 g 強制從位移指標處進行...