基本符號
符號 | 描述 | 實例 |
---|---|---|
literal |
匹配literal
|
foo |
re1lre2 |
匹配re1 或re2
|
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應替換成豎線“|”。