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