Regular Expression 的 Notation 列表:
記號 | 說明 |
字元 | 代表該字元, 例如輸入 a 就代表那個地方應該出現 a 這個字元 |
^ | 限制字串必須出現於行首, 例如 ^a 表這串字必須以 a 開頭; 如果 a 出現在其他地方, 都不算數 |
$ | 限制字串必須出現於行末, 例如 a$ 表這串字必須以 a 結尾; 如果 a 出現在其他地方, 都不算數 |
\ | 將特殊字元還原成字面意義的字元, 例如 \( 代表 ( 這個符號, \\ 代表 \ 這個符號; 這種表示法適用於 (, ), [, ] 等在 Regex 有特殊意義的字元 |
^ | 某字元以外的任何字元, 必須包在中括號裡面。例如 [^a] 表示 a 除外的任何字元或符號, [^a\t] 表示 a 和 tab 除外的任何字元或符號 |
- | 字元集合中可使用 - 來指定字元的區間, 必須包在中括號裡面。例如 [a-z] 表示從 a 到 z 的英文小寫字元, [1-3] 表示從 1 到 3 這三個數字之一 |
+ | 其前的字元或字元集合出現一次或一次以上, 例如 a+ |
? | 其前的字元或字元集合可出現一次或不出現, 例如 a? |
* | 其前的字元或字元集合可出現任何次數或不出現, 例如 a* |
(...) | 用以括住一群字元,且將之視成一個集合, 通常用來集合表示多個檢核式 |
{n} | 重複 n 次 |
{n,m} | 重複 n 到 m 次 |
{n,} | 至少重複 n 次 |
[] | 其中之一字元可出現可不出現,例如 [abc] 表示不論出現 a 或 b 或 c 都算符合 |
| | 代表「或」, 例如 (Sun|Mon|Tue|Wed|Thu|Fri|Sat), (日|一|二|三|四|五|六) ; 必須以左右括號括住 |
. (句點符號) | 代表除了換行符號 (\n) 以外的任一字元。如果要包括換行符號,請使用 [\s\S] |
\w (\W) | 代表任何英文(以外的) 字元 - 請注意, 數字字元也被承認 |
\s (\S) | 代表空白 (以外的) 字元 |
\d (\D) | 代表數字 (以外的) 字元 |
\b (\B) | 代表位於文字邊界的 (以外的) 字元, 例如 \bA 可以檢核出 AB, A\b 可以檢核出 BA, \bAA\b 可以檢核出 AA |
\r | 代表換行字元 (或稱 CR, Carriage Return) |
\n | 代表換行字元 (或稱 LF, Line Feed; 通常和 \r 一同出現, 所以一般以 \r\n 代表換行, 但根據我的測試, 無論使用 \r 或 \n 或 \r\n 都會得到相同的結果, 但唯獨不能寫成 \n\r, 但建議使用 \r?\n) |
\t | 代表 TAB 字元 (或稱 HT, Horizontal Tab) |
\( | 代表左括號 |
\) | 代表右括號 |
\x | 以十六進位字元碼代表某個字元; 例如 [\x21-\x7E] 可代表所有看得到的字元 ([\x20-\x7E] 則包括空白字元)。不過注意 \x 之後要使用兩個數字, 不足兩個數字者請補 0, 例如 \x01 |
\1, \2... | (Backreference Constructs) 表示出現過的群組; 例如 "(\d)(\D)" 樣式中有兩個群組, 若使用 "(\d)(\D)\1" 可檢出 "2A3"; 若使用 "(\d)(\D)\2+" 則可檢出 "2AB"; 餘此類推 |
\k<name> | 同上, 但適用於命名的群組; 例如 "(?<Digit>\d)(?<NonDigit>\D)\k<Digit>" 亦可檢出 "2A3" |
\p{Lu} (\P{Lu}) | 檢出大寫(非大寫)的字母, 例如 (?-i:\p{Lu}) 可檢出字串中所有大寫字母, 而 (?-i:\P{Lu}) 可檢出所有非大寫 (包括數字、空白等) 的字母 |
如果你想要練習 Regex 的話,你可以在 RegExLib.com 練習。先進入網頁,把畫面往下捲一點,在 Source 方塊中打進測試文字(例如 abc),然後在稍下方的 Pattern 方塊中打進你自己定的 Regex 樣式(例如 \w{3}),按 Submit 按鈕,再稍等一下子,在畫面的最下面就會出現 Match 或是 No match,表示正確或是錯誤。
沒有留言:
張貼留言