平時需要用到比較少,但是一到關鍵時刻卻又需要,老是忘記 :cry: 。寫個備忘
[color=blue]元字元[/color]
常用元字元表:
字元 說明
. 匹配除換行符以外的任意字元
\w 匹配字母、數字、漢字、下劃線
\s 匹配任意空白符
\d 匹配數字
\b 匹配單詞的開頭或結尾
^ 匹配字串的開頭
$ 匹配字串的結尾
[color=blue]字元轉義[/color]
如果要查詢元字元本身,必須使用\來消除元字元的特殊意義。eg:c:\\windows 匹配 c:\windows
[color=blue]反義[/color]
字元 說明
\w匹配字母、數字、漢字、下劃線以外的任意字元
\s匹配任意不是空白的字元
\d匹配任意不是數字的字元
\b匹配不是單詞開頭或結尾的位置
[^x]
匹配除x以外的任意字元
[^aieou]
匹配除aieou以外的任意字元
[color=blue]重複[/color]
字元 說明
*重複0或多次
+重複1或多次
? 重複0或1次
重複n次
重複n到多次
重複n到m次
eg:[a-z]*: 匹配任意長度的小寫字母串 aa,ab,ac
[color=blue]分支條件[/color]
有幾種規則,當滿足其中任意一種規則時都可成功匹配,規則用 | 隔開
eg:0\d-\d|0\d-\d:匹配兩種號碼:1)三位區號+八位號碼 2)四位區號+七位號碼
[color=blue]分組[/color]
用小括號()來指定分組,預設分組號從1開始
eg:(24[0-5]|25[0-4]|[01]?\d\d?\.)(24[0-5]|25[0-4]|[01]?\d\d?) :匹配ip位址
常用分組語法:
符號 說明
(exp)
匹配exp,並捕獲文字到自動命名的分組
(?exp)
匹配exp,捕獲文字到命名為name的分組
(:exp)
匹配exp,不捕獲文字,也不分配組號
[color=blue]零寬斷言[/color]
符號說明
(?=exp)
匹配exp前面的位置
(?<=exp)
匹配exp後面的位置
(?!=exp)
匹配後面跟的不是exp的位置
(?匹配前面跟的不是exp的位置
eg:1)\b\w+(?=ing\b) i am singging while she is dancing 匹配 sing 和 danc
2)(\b?<=re)\w+\b reading a book 匹配 ading
[color=blue]貪婪和懶惰[/color]
字元 說明
*?重複任意次,但盡可能少重複
+?重複1或多次,但盡可能少重複
??重複0或1次,但盡可能少重複
?重複n到m次,但盡可能少重複
?重複n到多次,但盡可能少重複
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...