元字符
现在你已经知道几个很有用的元字符了,如 \b,.,*
,还有 \d.
正则表达式里还有更多的元字符,比如 \s
匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。\w
匹配字母或数字或下划线或汉字等。
对中文/汉字的特殊处理是由 python 提供的正则表达式引擎在 Python 2 不是原生支持的,需要做一些转换,Python 3 是原生支持的;其它语言环境下的具体情况请查看相关文档。
下面来看看更多的例子:
\ba\w*\b
匹配以字母a开头的单词——先是某个单词开始处(\b),然后是字母 a,然后是任意数量的字母或数字 (\w*)
,最后是单词结束处(\b)。
好吧,现在我们说说正则表达式里的单词是什么意思吧:就是不少于一个的连续的\w。不错,这与学习英文时要背的成千上万个同名的东西的确关系不大 :)
\d+
匹配1个或更多连续的数字。这里的 + 是和 * 类似的元字符,不同的是 * 匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
\b\w{6}\b
匹配刚好6个字符的单词。
表1.常用的元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
正则表达式引擎通常会提供一个 "测试指定的字符串是否匹配一个正则表达式" 的方法,如 JavaScript 里的 RegExp.test()
方法或 Python 里的 re.match() 方法。这里的匹配是指是字符串里有没有符合表达式规则的部分。如果不使用 ^
和 $
的话,对于 \d{5,12}
而言,使用这样的方法就只能保证字符串里包含5到12连续位数字,而不是整个字符串就是5到12位数字。
元字符 ^
(和数字6在同一个键位上的符号)和 $
都匹配一个位置,这和 \b
有点类似。^
匹配你要用来查找的字符串的开头,$
匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:
^\d{5,12}$。
这里的 {5,12}
和前面介绍过的 {2}
是类似的,只不过 {2}
匹配只能不多不少重复2次,{5,12}
则是重复的次数不能少于5次,不能多于12次,否则都不匹配。
因为使用了 ^
和 $
,所以输入的整个字符串都要用来和\d{5,12}
来匹配,也就是说整个输入必须是5到12个数字,因此如果输入的QQ号能匹配这个正则表达式的话,那就符合要求了。
和忽略大小写的选项类似,有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^
和 $
的意义就变成了匹配行的开始处和结束处。