Regular expression 是在程式中經常使用到的表示式,特別是作 pattern search 的時候。但是不同的語言有不同的支援程度,以下介紹一些基本的使用方式:
字元 | 功能 |
. | 符合除了 "換行" (\r\n) 之外的所有字元 |
[abc] | 符合在 [ ] 中所有的字元 |
[^abc] | 除了在 [ ] 中的所有字元外,其他全部都符合 |
[n-q] | 符合在 [ ] 中範圍的字元,Ex: [a-z],意即符合 a, b, c... z 的字元 |
\d | 符合所有的數字 (digits) |
\D | 符合所有 "非數字" |
\n | 符合換行字元 |
\s | 符合所有的 white space (包含空白, Tab, \r, \n) |
\S | 符合所有 非 white space 字元 |
\t | 符合 Tab 字元 |
\w | 符合所有文數字 (文字+數字, 不包含符號) |
\W | 符合所有 非文數字 |
\b | 符合文數字的邊界 |
\B | 符合非文數字的邊界 |
\ | 符合特殊字元 (ex: \n 表示換行) |
+ | 比對重複多次的字元 (ex: a+ 表示 a 必須出現一次以上) |
* | 比對沒有出現或重複多次的字元 (ex: a* 表示 a 沒有出現或出現一次以上) |
? | 比對沒有出現或只出現一次的字元 (ex: a? 表示 a 沒有出現或只出現一次) |
{n} | 比對出現 n 次字元 (ex: a{3} 表示 a 一定要出現三次) |
{n,} | 比對出現至少 n 次的字元, (ex: a{3,} 表示 a 可以至少要出現三次) |
{n,m} | 比對出現 n ~ m 次的字元, (ex: a{3,6} 表示 a 可以至少出現三次, 最多出現 6 次) |
() | 比對字串並將其存入變數, (ex: (a*) 則比對連續重複 a 的字串, 並存入 $1 的變數中 |
寫 Regular expression 需要大量的測試,尤其是在複雜的判斷的時候。
以下提供一個測試網站,這樣就可以測試看看你所寫的 Regular expression 是否正常了!