正規表示式

2021-10-25 14:35:09 字數 2084 閱讀 9422

由普通字元以及特殊字元組成的文字模式

1 基本語法及使用

(1)例子

如要找出文件裡的所有we單詞,如果直接輸入we可能會把well,wet等也匹配進來

但如果加上\bwe\b則可以解決這個問題,這是因為\b是乙個特殊的元字元,代表單詞的開頭或結尾

(2)常用元字元

元字元的四種作用:匹配字元、匹配位置、匹配數量和匹配模式。

常見元字元

.匹配除換行符以外的任意字元

\b匹配單詞的開始或結束

\d匹配數字

\w匹配字母、數字、下劃線或漢字

\s匹配任意空白符,包括空格、製表符、換行符、中文全形空格等

^匹配字串的開始

$匹配字串的結束

eg:匹配所有以s開頭的單詞可以用:"\bs\w*\b",以s開頭的字串可用"^\s\w*$"

(3)字元轉義

用於查詢特殊字元時,可用」\「來取消特殊字元的特殊意義

eg:①查詢「.」,「\」時,可以寫成「.」,「\」

②查詢「www.baidu.com」時可用「www.baidu.com」來查詢

(4)重複

常用限定符

*重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次或更多次

重複n到m次

eg:①hello\d+:匹配hello後面跟1個或更多數字,例如hello1或者hello10等情況

②^\d$:匹配5到12個數字的字串,例如qq號

③^\d$:匹配11個數字的字串,例如**號碼,身份證號碼,學號等也可類似

④word\d?:匹配word後面更0個或1個數字的情況。

(5) 字元集合

自定義字元集合:通過來實現

eg:①[abcde]是匹配abcde中的任意乙個字元,[.?!]匹配.?!中的任意乙個

②指定範圍的[0-9]等價\d,[a-z0-9a-z]等價於\w

(6)分支條件

指正規表示式裡面有幾種匹配條件,滿足其中任意一種都應該匹配,具體方法是"|"把不同的規則分隔開。

同時需要注意的是,匹配條件時,將會從左到右的測試每個條件,如果滿足了某乙個條件就不管其他條件。

eg:匹配**號碼時,**號碼一種是:三位區號-八位本地號,四位區號-七位本地號;

可用0\d-\d|0\d-\d進行匹配

(7) 分組

以寫出乙個ip位址表示式為例。

eg:①((\d).)\d。這個可能匹配出333.444.555.666之類的不存在的位址,故需要改進

②((25|2|[0-1]\d|[1-9]?\d).)(25|2|[0-1]\d|[1-9]?\d)

(8) 反義

\b匹配不是單詞的開始或結束

\d匹配任意非數字的字元

\d+匹配非數字的乙個或多個字元

\w匹配任意不是字母、數字、下劃線或漢字的字元

\s匹配任意不是空白符(括空格、製表符、換行符、中文全形空格等)的字元

匹配除了a以外的任意字元

匹配除了abcde以外的字元

(9) 後向引用

使用小括號指定乙個表示式就可以看做乙個分組。以分組的左括號為標誌,第乙個出現分組的組號為一,第二個為2。

也可以自定義子表示式的組名,使用(?\d+)或者(?『digit』\d+),就把"\d+"的組名指定為digit了。要反向引用這個組捕獲的內容,可以使用\k

捕獲(exp)

匹配exp,並捕文字到自動命名的組裡

(?exp)

匹配exp,並捕獲文字到名稱為name的組裡,也可寫成(?'name』exp)

(?:exp)

匹配exp,不捕獲匹配的文字,也不給此分組分配組號

(10) 零寬斷言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp後面的位置

(?!exp)

匹配後面跟的不是exp的位置

(?匹配前面不是exp的位置

(11) 注釋

(?#comment)

不對正規表示式的處理產生任何影響,只用於提供注釋

eg:\b\w+(?#字串)\b

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

非負整數 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正規表示式 編寫正規表示式

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