6 /ba/w*/b查找以字母a開始的詞組
這個以查找詞組的起始位置(/b),然後是字母“b”,然後是任何重複的文字或者數字字符(/w*),然後是詞組的結尾(/b)。
7 /d+ 查找重複的數字
這裏面,“+”與“*”很相似,但是“+”要求至少匹配一次。
8 /b/w{6}/b 查找六個字母的詞組
試着在Expresso中運行這些表達式,然後開始你自己的正則表達式測試。下面的列表中就是一些具有特殊意義的字符:
. |
匹配除新行外的所有字符 |
/w |
匹配任意字母字符 |
/s |
匹配任意空白字符 |
/d |
匹配任意數字 |
/b |
匹配單詞的開始或者結尾 |
^ |
匹配字符串的開始 |
$ |
匹配字符串的結尾 |
表1 常用到的特殊字符正則表達式
開始
特殊字符“^”與“$”經常用來查找開始或者結尾匹配。在校驗整個輸入必須符合某一個格式時,這個就顯得尤爲有效。例如,校驗一個7位數字的電話號碼,你可能這樣使用:
9 ^/d{3}-/d{4}$ 校驗7位數字的電話號碼
這個同例5一樣,但是它僅僅是強制要求整體輸入,而匹配之後沒有校驗其他任何東西。在“.NET”中通過設置“Multiline”選擇,“^”與“$”可以改變原有的意義,而去匹配單獨一行文本的開始和結束匹配,而不是整個文本。“Expresso”使用了這個選項。
轉義字符
當你確實想要查找任意一個特殊字符如“^”或者“$”的時候就會出現一些問題。使用反斜槓就可以去掉特殊的含義,比如“/^”、“/$”以及“//”,可以匹配本來的字符含義:“^”、“$”以及“/”。
重複
你已經明白“{3}” 以及“*”,都用來表示單一字符的重複出現。到後面,你將看到同樣的符號將用來重複整個子表達式。這裏還有其他幾種方式來制定一個重複,如下表中:
* |
重複任意次數 |
+ |
重複至少一次 |
? |
重複一次或者零次 |
{n} |
重複 n次 |
{n,m} |
重複n次,但是不超過m次 |
{n,} |
重複至少n次 |
表2 常用到的數量詞
我們將開始一些其他的例子:
10 /b/w{5,6}/b 查找5或者6個字母
11 /b/d{3}/s/d{3}-/d{4} 查找10位數字的電話號碼
12 /d{3}-/d{2}-/d{4} 社會安全號碼
13 ^/w* 一行中或者文本中的第一個詞語
在最後一個例子中,嘗試有或者沒有“Multiline”選項,這個將改變“^”的含義。