正則表示式-速查表
阿新 • • 發佈:2021-08-23
字元匹配
元字元 | 說明 |
---|---|
\ | 轉義符,詳看註解 1 |
\d | [0-9],數字 |
\D | [^0-9],非數字 |
\w | [0-9a-zA-Z_],單詞字元 |
\W | [^0-9a-zA-Z_],非單詞字元 |
\s | 空白符,包括空格、製表符、換行符等 |
\S | 非空白符 |
\uxxxx | 十六進位制 Unicode 字元 |
\f | 換頁符 |
\n | 換行符 |
\r | 回車符 |
\t | 水平製表符 |
\v | 垂直製表符 |
\0 | NULL 字元 |
. | 匹配除換行符、回車符以外的任意字元 |
[abc] | 字元組,詳看註解 2 |
註解:
\
字元
\
可以對緊隨其後的字元進行轉義,使其具有特殊的含義,如上述的\d
、\w
等。另一個作用是,一些字元在正則表示式中有特殊的含義,被稱作元字元,比如
*
、.
、{[()]}
、?
、\
等,此時前面加上\
可以使其失去特殊含義。[abc]
字元組內部的元字元只有
-
和^
,其他字元都會被當成普通字元。
-
用於連線兩個字元,表示在兩個字元之間的字元,比如[a-z0-9]
。
^
放置在開始位置,表示反選。比如[^a-zA-Z]
。
位置匹配
元字元 | 說明 |
---|---|
\b | 單詞邊界 |
\B | 非單詞邊界 |
^ | 字串起始 |
$ | 字串結束 |
量詞
元字元 | 說明 |
---|---|
* | >= 0 |
+ | >= 1 |
? | 0 or 1 |
{X,Y} | 詳看註解 1 |
註解:
{X,Y}
有幾種不同的格式,比如
{X,}
表示>=X
,{X}
表示==X
,{X,Y}
表示>=X and <=Y
。惰性匹配
當量詞後新增一個
?
表示惰性匹配,即儘可能少的匹配。比如*?
、??
、{X,Y}?
。
分組和分支
元字元 | 說明 |
---|---|
(PATTERN) | 捕獲組,詳看註解 1 |
\NUMBER | 分組引用,詳看註解 2 |
(?:PATTERN) | 非捕獲組 |
PATTERN1|PATTERN2 | 匹配 PATTERN1 或者 PATTERN2 |
註解:
(PATTERN)
用
()
包含一段子匹配,這樣做可以在之後對其進行引用,量詞也可以用於整上述個子匹配。比如(abc)+
表示大於 0 個連續abc
。\NUMBER
數字
NUMBER
表示捕獲組的序號,其分組子串序號從1
開始,0
表示整個字串。
零寬斷言
元字元 | 說明 |
---|---|
a(?=PATTERN) | 先行斷言(前瞻),匹配 PATTERN 時,返回 a ,詳看註解 1 |
a(?!PATTERN) | 先行否定斷言(前瞻),不匹配 PATTERN 時,返回 a |
(?<=PATTERN)a | 後行斷言(後顧) |
(?<!PATTERN)a | 後行否定斷言(後顧) |
註解:
a(?=PATTERN)
零寬斷言表示只匹配位置,不匹配字元。此處表示如果匹配後面的
PATTERN
時,返回a
。a
用於助記,可以是完整的匹配表示式。