Regular expression 是在程式中經常使用到的表示式,特別是作 pattern search 的時候。但是不同的語言有不同的支援程度,以下介紹一些基本的使用方式:
正規表示式 功能
. 除了 換行(\r\n) 之外的任何字元
[abc] 在 [ ] 中所有的字元
[^abc] 除了在 [ ] 中的字元外的其他任何字元
[n-q] 在 [ ] 中範圍的字元(ex: [a-g],意即符合 a, b, c...g 的字元)
\d 數字
\D 非數字"
\n 換行字元
\s 所有的 white space (包含空白, Tab, \r, \n)
\S 所有 非 white space 字元
\t Tab 字元
\w 所有文、數字 (不包含符號)
\W 所有 非文、數字
\b 文、數字的邊界
\B 非文、數字的邊界
\ 避開特殊字元 (ex: \*, \+...等)
\ooctal 比對八進位,其中octal是八進位數目
\xhex 比對十六進位,其中hex是十六進位數目
^ 比對輸入列的啟始位置
$ 比對輸入列的結束位置
+ 比對重複多次的字元 (ex: c+ 表示 c 必須出現一次以上)
* 比對出現 0 次到多次的字元
? 比對出現 0 次或只出現 1 次的字元
{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 的字串, 並存入變數中
. 除了 換行(\r\n) 之外的任何字元
[abc] 在 [ ] 中所有的字元
[^abc] 除了在 [ ] 中的字元外的其他任何字元
[n-q] 在 [ ] 中範圍的字元(ex: [a-g],意即符合 a, b, c...g 的字元)
\d 數字
\D 非數字"
\n 換行字元
\s 所有的 white space (包含空白, Tab, \r, \n)
\S 所有 非 white space 字元
\t Tab 字元
\w 所有文、數字 (不包含符號)
\W 所有 非文、數字
\b 文、數字的邊界
\B 非文、數字的邊界
\ 避開特殊字元 (ex: \*, \+...等)
\ooctal 比對八進位,其中octal是八進位數目
\xhex 比對十六進位,其中hex是十六進位數目
^ 比對輸入列的啟始位置
$ 比對輸入列的結束位置
+ 比對重複多次的字元 (ex: c+ 表示 c 必須出現一次以上)
* 比對出現 0 次到多次的字元
? 比對出現 0 次或只出現 1 次的字元
{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 的字串, 並存入變數中
寫 Regular expression 需要不斷的測試,因為只要規則有一點誤差就 search 不到了,尤其是在做複雜判斷的時候,所以在下面提供了一個測試 Regular expression 網站,這樣就可以測試你所寫的 Regular expression 是否正確囉!
沒有留言:
張貼留言