正規表示式

2021-06-18 18:30:57 字數 2151 閱讀 3583

1.元字元

注:在任意的元字元前加上反斜線,將失去其元字元意義,表示匹配它。

點號(.):匹配任意乙個字元,換行符(\n)除外。

反斜線(\):作為轉義字元。

2.量詞

星號(*):用於匹配前乙個條目零次或多次。

加號(+):表示匹配前乙個條目一次以上。

問號(?):表示匹配前乙個條目出現一次或零次。

花括號({}):用於表示重複次數。 

eg:/(read)/    表示read可以重複3到100次

/(read)/            表示可以重複3到無窮次

/(read)/             表示重複3次。

3.模式分組

圓括號(()):對字元進行串分組。

反向引用的寫法是在反斜線的後面跟上數字。應用反向引用來對前面最近的圓括號中的模式進行匹配。數字表示匹配第幾個括號。

eg:模式:/y(....) d\1    「yabba dabba d」  匹配正確。

模式:/y(.)(.)\2\1/     匹配"abba"。

模式:/y((.)(.)\2\1)d\1/    匹配「yabba dabba d」。

\g可以將\111變為\g11.其中n可以為負數,表示倒著數括號。

eg:模式:/(.)\g11/  匹配成功"aa11"。

4.擇一匹配

豎線(|):表示要麼匹配左邊的內容,要麼匹配右邊的內容。

eg:模式:/fread(and|or)barney/  只對freadandbarney和freadorbarney匹配成功。

5.字符集

方括號():表示只能對方括號中的字符集的乙個字元進行匹配。

連線符(-):可以用來表示範圍。

脫字元(^):表示字符集中的字元除外

eg:模式:/[adhjifeg]/  對方括號中的8個字元中的乙個匹配。

模式:/[a-za-z]/   對52個大小字母中的乙個進行匹配

6.字符集的簡寫

\d:表示乙個數字

\s:表示能匹配任意空白字元

\w:表示有[a-za-z0-9]組成的字元

\d:等同於[^\d]

\s:等同於[^\s]

\w:等同於[^\w]

7.定界符

可以選用任何成對的定界符。/read/是m/read/的縮寫。也可以運用其他的定界符表示,如:m,m[read],m,m,read,。

8.模式匹配修飾符

/i:表示大小寫無關。 eg:模式:/fred/i   對fred,fred等匹配成功。

/s:表示匹配任意字元,包含換行符。(需要和.號一起使用)   eg:模式/bary.*fred/s   對「barydsfsdfds\nsdfds\ndffred」匹配成功。

/x:表示可以在模式中加入空白。  eg:模式:/-?[0-9]+\.?[0-9]*/  等同於 /-? [0-9]+ \.? [0-9]*/x。

組合修飾符:可以將上面的多可修飾符放在一起。

9.錨位

給定錨位,可以讓模式從指定位置開始匹配。

\a:匹配字串的絕對開始。 eg:mi

\z:匹配字串的絕對末尾。            eg:mi

\z:匹配行尾,後面可以跟著換行符。

\b:單詞邊界錨位(由\w組成的單詞)。    eg:/\bfread\b/   僅對fread匹配成功。

\b:表示非單詞錨位 。             eg:/\bsercd\b/   對sercdfsd,sercdfdsd等匹配成功,對resercdfsd,sercd等匹配不成功。

10.繫結操作符=~

預設情況下的操作物件是$_,我們可以通過=~來對模式進行匹配。例如:if($sdfsd=~/sdfds/)....

11.模式的內插

正規表示式內部可以進行雙引號的內插。

12優先順序

1.圓括號(())具有最高優先順序,用於分組和捕獲。

2.第二級為量詞,用於表示重複次數。量詞有點號,問號,加號,花括號。

3.第**為錨位和序列。有:\a,\z,\z,^,$,\b,\b

4.第四級為豎線(|)。

5.最低階為原子。如:a,[abc],\d,\1,\g.

eg:/\aread|binray\z/   表示要麼匹配以read開始的的字串,或者以binray結束的字串。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...