正則表達式小記

  • \ 通常用於轉義字符正則表達式

  • [] 字符類定義code

  • | 開始一個可選分支字符串

  • () 子組io

  • - 標記字符範圍編譯

經常使用的元字符

  • . 匹配除換行符之外的任意字符perl

  • \w 匹配字母或數字或下劃線或漢字語法

  • \s 匹配任意的空白符命名

  • \d 匹配數字數據

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

  • ^ 匹配字符串的開始

  • $ 匹配字符串的結束

經常使用的限定符

  • * 重複零次或更屢次

  • + 重複一次或更屢次

  • ? 重複零次或一次

  • {n} 重複 n 次

  • {n,} 重複 n 次或更屢次

  • {n,m} 重複 n 到 m 次

經常使用的反義代碼

  • \W 匹配任意不是字母,數字,下劃線,漢字的字符

  • \S 匹配任意不是空白符的字符

  • \D 匹配任意非數字的字符

  • \B 匹配不是單詞開頭或結束的位置

  • [^x] 匹配除了 x 之外的任意字符

  • [^aeiou] 匹配除了 aeiou 這幾個字母之外的任意字符

經常使用分組語法

捕獲

  • (exp) 匹配 exp,並捕獲文本到自動命名的組裏

  • (?<name>exp) 匹配 exp,並捕獲文本到名稱爲 name 的組裏,也能夠寫成 (?'name'exp)

  • (?:exp) 匹配 exp,不捕獲匹配的文本,也不給此分組分配組號

零寬斷言

  • (?=exp) 匹配 exp 前面的位置

  • (?<=exp) 匹配 exp 後面的位置

  • (?!exp) 匹配後面跟的不是 exp 的位置

  • (?<!exp) 匹配前面不是 exp 的位置

註釋

  • (?#comment) 這種類型的分組不對正則表達式的處理產生任何影響,用於提供註釋讓人閱讀

懶惰限定符

  • *? 重複任意次,但儘量少重複

  • +? 重複 1 次或更屢次,但儘量少重複

  • ?? 重複 0 次或 1 次,但儘量少重複

  • {n,m}? 重複 n 到 m 次,但儘量少重複

  • {n,}? 重複 n 次以上,但儘量少重複

模式修飾符

  • U 默認狀況下爲貪婪匹配(u 匹配結果存在歧義時取長),若是設置了這個修飾符,模式就會成爲懶惰匹配(匹配結果存在歧義的取其短)

  • i 若是設置了這個修飾符,模式中的字母會進行大小寫不敏感匹配

  • m 默認狀況下,PCRE 認爲目標字符串是由單選字符組成的(然而實際上它可能會包含多行),「行首」 元字符 (^) 僅匹配字符串的開始位置,而 「行末」 元字符 ($) 僅匹配字符串末尾,或者最後的換行符(除非設置了 D 修飾符)。這個行爲和 prel 相同。當這個修飾符設置以後,「行首」 和 「行末」 就會匹配目標字符串中任意換行符以前或以後,另外,還分別匹配目標字符串的最開始和最末尾位置。這等同於 prel 的 /m 修飾符。若是目標字符串中沒有 "\n" 字符,或者模式中沒有出現 ^$ ,設置這個修飾符不產生任何影響。

  • s 若是設置了這個修飾符,模式中的點號元字符匹配全部字符,包含換行符。若是沒有這個修飾符,點號不匹配換行符。這個修飾符等同於 perl 中的 /s 修飾符。一個取反字符類好比 [^a] 老是匹配換行符,而不依賴於這個修飾符的設置。

  • x 若是設置了這個修飾符,模式中的沒有通過轉義的或不在字符類中的空白數據字符總會被忽略,而且位於一個未轉義的字符類外部的 # 字符和下一個換行符之間的字符也被忽略。這個修飾符等同於 perl 中的 /x 修飾符,使被編譯模式中能夠包含註釋。注意:這僅用於數據字符。空白字符仍是不能在模式的特殊字符序列中出現。

相關文章
相關標籤/搜索