Regex 字元類別
字元類別建構
字元類別可讓您指定一組可產生單一字元比對的字元 (放在方括號中)。字元類別僅能比對單一字元。例如,
gr[ae]y
將符合 gray
或 grey
,但不是 graay
或 graey
。方括號內的字元順序無關緊要。您可以在字元類別內使用連字號 (-) 來指定字元範圍。範例︰
[a-z]
符合以下條件的單個小寫字母 a
和 z
。您也可以使用多個範圍,或範圍與單一字元的組合。範例︰ [0-9X]
符合數字或字母 X
。字元和範圍的順序無關緊要。左括號後面的插入符號會指定要從比對中排除的字元。例如,
[^abc]
符合以下任何字元︰ a
, b
,或 c
。建構 | 類型 | 說明 |
|---|---|---|
[
abc ] | 簡單 | 符合項目 a 或 b 或 c
|
[^abc]
| 取消 | 符合以下任何字元︰ a 或 b 或 c
|
[a-zA-Z]
| 範圍 | 符合項目 a 至 z ,或 A 至 Z (含) |
[a-d[m-p]]
| 工會 | 符合項目 a 至 d ,或 m 至 p
|
[a-z&&[def]]
| 交集 | 符合項目 d , e ,或 f
|
[a-z&&[^xq]]
| 減法 | 符合項目 a 至 z ,但不包括 x 和 q
|
預先定義的字元類別
預先定義的字元類別是常用規則運算式的便捷速記。
建構 | 說明 | 範例 |
|---|---|---|
.
| 比對任何單一字元 (換行符除外) | .at 與詞組「batchfiles」中的「cat」、「hat」和「bat」相符 |
\d
| 符合任何數字字元 (相當於 [0-9] ) | \d 與「C3PO」中的「3」和「file_2.txt」中的「2」相符 |
\D
| 比對任何非數字字元 (相當於 [^0-9] ) | \D 與「900S」中的「S」和「Q45」中的「Q」相符 |
\s
| 比對任何單一空白字元 (相當於 [ \t\n\x0B\f\r] ) | \sbook 與「藍皮書」中的「book」相符,但與「notebook」中的任何內容都不相符 |
\S
| 比對任何單一非空白字元 | \Sbook 與「notebook」中的「book」相符,但與「藍皮書」中的任何內容都不相符 |
\w
| 匹配任何英數字元,包括底線 (相當於 [A-Za-z0-9_] ) | r\w* 與「rm」和「根」相符 |
\W
| 比對任何非英數字元 (相當於 [^A-Za-z0-9_] ) | \W 比對「stmd &」中的「&」、「100%」中的「%」,以及「$HOME」中的「$」 |
POSIX 字元類別 (US-ASCII)
POSIX 具有一組表示某些通用範圍的字元類別。與方括號和預先定義的字元類別類似,但會考量地區設定 (當地語言/編碼系統)。
建構 | 說明 |
|---|---|
\p{Lower}
| 小寫字母字元 [a-z]
|
\p{Upper}
| 大寫字母字元 [A-Z]
|
\p{ASCII}
| ASCII 字元 [\x00-\x7F]
|
\p{Alpha}
| 一個字母字元 [a-zA-z]
|
\p{Digit}
| 一個數字, [0-9]
|
\p{Alnum}
| 英數字元 [a-zA-z0-9]
|
\p{Punct}
| 標點符號字元,其中之一是 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
|
\p{Graph}
| 可見的字元 [\p{Alnum}\p{Punct}]
|
\p{Print}
| 可列印的字元 [\p{Graph}\x20]
|
\p{Blank}
| 空格或 Tab [ t]
|
\p{Cntrl}
| 控製字元 [\x00-\x1F\x7F]
|
\p{XDigit}
| 十六進位數字 [0-9a-fA-F]
|
\p{Space}
| 空白字元 [ \t\n\x0B\f\r]
|