Regex 常見語法


常用元字符

. 匹配除換行符以外的任意字符。
\w 匹配字母或數字或下划線或漢字。
\W 匹配任意不是字母,數字,下划線,漢字的字符。 \s 匹配任意的空白符。
\S 匹配任意不是空白符的字符。等價於 [^ \f\n\r\t\v] \d 匹配數字。
\D 匹配任意非數字的字符。等價於 [^0-9] \b 匹配單詞的開始或結束。
\B 匹配不是單詞開頭或結束的位置 [ck] 匹配包含括號內元素的字符
[^CK] 匹配除了CK以外的任意字符 ^ 匹配行的開始。 $  匹配行的結束。 \ 對下一個字符轉義。比如$是個特殊的字符。要匹配$的話就得用\$ | 分支條件,如:x|y匹配 x 或 y。
[\u4e00-\u9fa5] 匹配漢字文字 [^\u4e00-\u9fa5] 匹配非漢字字符 [^\x00-\xff] 匹配雙字節字符(漢字、中文標點符號等)

特殊元字符

\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\t 匹配一個制表符。等價於 \x09 和 \cI。
\v 匹配一個垂直制表符。等價於 \x0b 和 \cK。

限定符

* 匹配前面的子表達式零次或多次。
+ 匹配前面的子表達式一次或多次。
? 匹配前面的子表達式零次或一次。
{n} n 是一個非負整數。匹配確定的 n 次。
{n,} n 是一個非負整數。至少匹配n 次。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。

懶惰限定符

*?  重復任意次,但盡可能少重復。如 "acbacb"  正則  "a.*?b" 只會取到第一個"acb" 原本可以全部取到但加了限定符后,只會匹配盡可能少的字符 ,而"acbacb"最少字符的結果就是"acb" 。
+? 重復1次或更多次,但盡可能少重復。與上面一樣,只是至少要重復1次。
?? 重復0次或1次,但盡可能少重復。如 "aaacb" 正則 "a.??b" 只會取到最后的三個字符"acb"。
{n,m}? 重復n到m次,但盡可能少重復。如 "aaaaaaaa"  正則 "a{0,m}" 因為最少是0次所以取到結果為空。
{n,}? 重復n次以上,但盡可能少重復。如 "aaaaaaa"  正則 "a{1,}" 最少是1次所以取到結果為 "a"。

捕獲分組

(exp)  匹配exp,並捕獲文本到自動命名的組里。
(?<name>exp) 匹配exp,並捕獲文本到名稱為name的組里。
(?:exp) 匹配exp,不捕獲匹配的文本,也不給此分組分配組號以下為零寬斷言。
(?=exp) 匹配exp前面的位置。如 "How are you doing" 正則"(?<txt>.+(?=ing))" 這里取ing前所有的字符,並定義了一個捕獲分組名字為 "txt" 而"txt"這個組里的值為"How are you do";
(?<=exp) 匹配exp后面的位置。如 "How are you doing" 正則"(?<txt>(?<=How).+)" 這里取"How"之后所有的字符,並定義了一個捕獲分組名字為 "txt" 而"txt"這個組里的值為" are you doing";
(?!exp) 匹配后面跟的不是exp的位置。如 "123abc" 正則 "\d{3}(?!\d)"匹配3位數字后非數字的結果
(?<!exp) 匹配前面不是exp的位置。如 "abc123 " 正則 "(?<![0-9])123" 匹配"123"前面是非數字的結果也可寫成"(?!<\d)123"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM