1. 程式人生 > 其它 >正則表示式-速查表

正則表示式-速查表

字元匹配

元字元 說明
\ 轉義符,詳看註解 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

註解:

  1. \

    字元 \ 可以對緊隨其後的字元進行轉義,使其具有特殊的含義,如上述的 \d

    \w 等。

    另一個作用是,一些字元在正則表示式中有特殊的含義,被稱作元字元,比如 *.{[()]}?\ 等,此時前面加上\ 可以使其失去特殊含義。

  2. [abc]

    字元組內部的元字元只有 -^,其他字元都會被當成普通字元。

    - 用於連線兩個字元,表示在兩個字元之間的字元,比如 [a-z0-9]

    ^ 放置在開始位置,表示反選。比如 [^a-zA-Z]

位置匹配

元字元 說明
\b 單詞邊界
\B 非單詞邊界
^ 字串起始
$ 字串結束

量詞

元字元 說明
* >= 0
+ >= 1
0 or 1
{X,Y} 詳看註解 1

註解:

  1. {X,Y}

    有幾種不同的格式,比如 {X,} 表示 >=X{X} 表示 ==X{X,Y} 表示 >=X and <=Y

  2. 惰性匹配

    當量詞後新增一個 ? 表示惰性匹配,即儘可能少的匹配。比如 *???{X,Y}?

分組和分支

元字元 說明
(PATTERN) 捕獲組,詳看註解 1
\NUMBER 分組引用,詳看註解 2
(?:PATTERN) 非捕獲組
PATTERN1|PATTERN2 匹配 PATTERN1 或者 PATTERN2

註解:

  1. (PATTERN)

    () 包含一段子匹配,這樣做可以在之後對其進行引用,量詞也可以用於整上述個子匹配。比如 (abc)+

    表示大於 0 個連續 abc

  2. \NUMBER

    數字 NUMBER 表示捕獲組的序號,其分組子串序號從 1 開始,0 表示整個字串。

零寬斷言

元字元 說明
a(?=PATTERN) 先行斷言(前瞻),匹配 PATTERN 時,返回 a,詳看註解 1
a(?!PATTERN) 先行否定斷言(前瞻),不匹配 PATTERN 時,返回 a
(?<=PATTERN)a 後行斷言(後顧)
(?<!PATTERN)a 後行否定斷言(後顧)

註解:

  1. a(?=PATTERN)

    零寬斷言表示只匹配位置,不匹配字元。此處表示如果匹配後面的 PATTERN 時,返回 aa 用於助記,可以是完整的匹配表示式。