深藏若虛

正規表達式符號速查表

Regular Expression Cheatsheet

正規表達式(Repgular Expression)是一個很好用的技能,雖然很常用,但有時候會一時忘記想要功能的符號是什麼,所以寫了篇速查用的整理筆記,幫助自己需要時可以回來查詢。尤其是最近有考慮幫助《世紀帝國 II》的隨機地圖腳本在本部落格呈現時,有程式碼高亮的風格,所以有在研究如何編寫 highlight.js 的語言擴充,就很常用到正規表達式,這也是寫這篇的主要原因。

請注意,本篇不是正規表達式的教學。

限制符

通常前面會接 1 字元(Character)或匹配模式(Pattern),這裡以 x 代稱。

符號 說明
x? 符合 x 0 ~ 1 次
x* 符合 x 0 ~ N 次1
x+ 符合 x 1 ~ N 次1
x{n} 確定符合 x n 次
x{n,} 至少符合 x n 次
x{n,m} 符合 x n ~ m 次

特殊符號

符號 說明
^ 符合輸入字串的開始位置,或是單行的開始處
$ 符合輸入字串的結束位置,或是單行的結尾處
? 非貪婪模式搜尋2
\b 符合一個單詞邊界3
\B 符合非單詞邊界

匹配模式

這邊以 xy 代稱 1 字元(Character)或匹配模式(Pattern)

符號 說明 紀錄
(x) 符合 x
(?:x) 符合 x
x(?=y) 正向肯定預查,符合後面接 yx
x(?!y) 正向否定預查,符合後面不接 yx
(?<=x)y 反向肯定預查,符合前面接 xy
(?<!x)y 反向否定預查,符合後面不接 xy

自訂字元集合

這邊以 xy 代稱 1 字元(Character)或匹配模式(Pattern)

符號 說明
x|y 符合 xy
[abc] 字元集合
[^abc] 排除型字元集合
[a-z] 字元範圍
[^a-z] 排除型字元範圍。

內建可視字元集合

符號 說明 等價
. 除了 \n 以外的任何單字 [^\n]
\d 數字字元 [0-9]
\D 非數字字元 [^0-9]
\w 包括底線的單詞字元 [A-Za-z0-9_]
\W 任何非單詞字元 [^A-Za-z0-9_]

內建空白字元集合

符號 說明 等價
\s 任何空白字元 [ \f\n\r\t\v]
\S 任何非空白字元 [^ \f\n\r\t\v]
\f 符合一個換頁符 [\x0c\cL]
\n 符合一個換行符 [\x0a\cJ]
\r 符合一個 Enter 符 [\x0d\cM]
\t 符合一個制表符 [\x09\cI]
\v 符合一個垂直制表符 [\x0b\cK]

特殊字元

符號 說明 等價
\ 轉譯字元
\cX 控制字元,X 為 A-Z。也就是 Ctrl + [A-Z] 的意思

  1. 這邊的 N 表示為自然數、正整數。 
  2. 非貪婪模式儘可能少的符合所搜尋的字串。 
  3. 也就是指單詞和空格間的位置 

Information Technology