2014年2月10日 星期一

用 Regular expression 做 Pattern search

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 的字串, 並存入變數中



寫 Regular expression 需要不斷的測試,因為只要規則有一點誤差就 search 不到了,尤其是在做複雜判斷的時候,所以在下面提供了一個測試 Regular expression 網站,這樣就可以測試你所寫的 Regular expression 是否正確囉!

沒有留言:

張貼留言