參考:
表1.常用的元字元 **
說明.匹配除換行符以外的任意字元
/w匹配字母或數字或下劃線或漢字
/s匹配任意的空白符
/d匹配數字
/b匹配單詞的開始或結束
^匹配字串的開始
$匹配字串的結束
表2.常用的限定符
**/語法說明*
重複零次或更多次
+重複一次或更多次
?重複零次或一次
重複n次
重複n次或更多次
重複n到m次
表3.常用的反義**
**/語法
說明/w
匹配任意不是字母,數字,下劃線,漢字的字元
/s匹配任意不是空白符的字元
/d匹配任意非數字的字元
/b匹配不是單詞開頭或結束的位置
[^x]
匹配除了x以外的任意字元
[^aeiou]
匹配除了aeiou這幾個字母以外的任意字元
分類**/語法
說明捕獲
(exp)
匹配exp,並捕獲文字到自動命名的組裡
(?exp)
匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)
(?:exp)
匹配exp,不捕獲匹配的文字,也不給此分組分配組號
零寬斷言
(?=exp)
匹配exp前面的位置
(?<=exp)
匹配exp後面的位置
(?!exp)
匹配後面跟的不是exp的位置
(?匹配前面不是exp的位置
注釋(?#comment)
這種型別的分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀
**/語法
說明*?
重複任意次,但盡可能少重複
+?重複1次或更多次,但盡可能少重複
??重複0次或1次,但盡可能少重複
?重複n到m次,但盡可能少重複
?重複n次以上,但盡可能少重複
名稱說明
ignorecase(忽略大小寫)
匹配時不區分大小寫。
multiline(多行模式)
更改^和$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。(在此模式下,$的精確含意是:匹配/n之前的位置以及字串結束前的位置.)
singleline(單行模式)
更改.的含義,使它與每乙個字元匹配(包括換行符/n)。
ignorepatternwhitespace(忽略空白)
忽略表示式中的非轉義空白並啟用由#標記的注釋。
explicitcapture(顯式捕獲)
僅捕獲已被顯式命名的組。
**/語法
說明/a
報警字元(列印它的效果是電腦嘀一聲)
/b通常是單詞分界位置,但如果在字元類裡使用代表退格
/t製表符,tab
/r回車
/v豎向製表符
/f換頁符
/n換行符
/eescape
/0nn
ascii**中八進位制**為nn的字元
/xnn
ascii**中十六進製制**為nn的字元
/unnnn
unicode**中十六進製制**為nnnn的字元
/cnascii控制字元。比如/cc代表ctrl+c
/a字串開頭(類似^,但不受處理多行選項的影響)
/z字串結尾或行尾(不受處理多行選項的影響)
/z字串結尾(類似$,但不受處理多行選項的影響)
/g當前搜尋的開頭
/punicode中命名為name的字元類,例如/p
(?>exp)
貪婪子表示式
(?-exp)
平衡組(?im-nsx:exp)
在子表示式exp中改變處理選項
(?im-nsx)
為表示式後面的部分改變處理選項
(?(exp)yes|no)
把exp當作零寬正向先行斷言,如果在這個位置能匹配,使用yes作為此組的表示式;否則使用no
(?(exp)yes)
同上,只是使用空表示式作為no
(?(name)yes|no)
如果命名為name的組捕獲到了內容,使用yes作為表示式;否則使用no
(?(name)yes)
同上,只是使用空表示式作為no
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...