正則表達式

基本符號

符號 描述 實例
literal 匹配literal foo
re1lre2 匹配re1re2 foolbar
. 匹配除\n之外的任意字符 a.b
* 匹配0個或更多個 a*
+ 匹配1個或更多個 a+
? 匹配0或1個 a?
^ 匹配開頭 ^abc
$ 匹配結尾 xyz$
{N} 匹配N次 a{N}
{M,N} 匹配M至N次 a{M,N}
[...] 匹配其中之一 [abc]
[...a-z...] 匹配a到z之間的一個 [0-9], [a-zA-Z]
[^char] ^[]中表示不匹配其中的字符 [^abc]
(*l+l{}l?)? 把含有*, +, {}, ?的匹配轉換成非貪婪式 a*?
(...) 匹配括號內的表達式并保存為子組 (abc)

注:re1lre2以及(*l+l{}l?)?中的l代表豎線“|”或的意思。

特殊字符

符號 描述 實例
\c 轉義 \*
\d 表示數字,即[0-9] \d+
\w 代表字母數字及下劃線,即[a-zA-Z0-9_] \w*
\s 代表非顯示字符,即[\n\t\f\r\v] a\fb
\b 限定邊界 \bgood\d
\N 調用(...)匹配到的子組 abc\1
\A, \Z ^$ \Aabc

另外,\D, \W, \S, \B與上述對應字符意義相反。

擴展表達式

符號 描述 實例
(?iLmsux) 分組中可以設置模式,iLmsux之中的每個字符代表一個模式 (?x), (?im)
(?P<name>...) 分組的命名模式,取此分組中的內容時可以使用索引也可以使用name (?P<data>)
(?:...) 分組的不捕獲模式,計算索引時會跳過這個分組 go(?:o)?d
(?P=name) 分組的引用模式,可在同一個正則表達式用引用前面命名過的正則 (?P=re1)
(?#...) 注釋,不影響正則表達式其它部分 (?#這是注釋)
(?=...) 表示所在位置右側能夠匹配括號內正則 (?=.com)
(?!...) 表示所在位置右側不能匹配括號內正則 (?!.net)
(?<=...) 表示所在位置左側能夠匹配括號內正則 (?<=abc)
(?<!...) 表示所在位置左側不能匹配括號內正則 (?<!abc)
(?(id/name)YlN) 若前面指定id或name的分區匹配成功則執行yes處的正則,否則執行no處的正則 (?(1)ylx)

注:(?(id/name)YlN)(?(1)ylx)中的l應替換成豎線“|”。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容