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”选项,这个将改变“^”的含义。