python正则表达式中,特殊代码匹配一类字符, .匹配除换行符以外的任意字符, \w匹配字母或数字, \s匹配任意的空白符, \d匹配数字, \b匹配单词的开始或结束, ^匹配字符串的开始, $匹配字符串的结束
上一篇教程中,你接触了一个简单的正则表达式book,并使用它在目标字符串中进行了匹配,如果足够细心,你可能会注意到,在字符串"this is a book"中,有两个is,如果正则表达式is去匹配,结果会是怎样呢?
和预期的一致,找到了两个is,但是这样就有了问题,如果只想找到单词is,不想找到其他单词中包含的is,该怎么写正则表达式呢?
你应该这样写正则表达式: \bis\b ,\b匹配单词的开始或者结束,如此一来,就可以准确的匹配到单词is了。
在正则表达式中\b 是特殊字符,特殊字符有着特殊的作用,他们被用来代表某些特定的字符。
代码/语法 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
接下来逐一讲解这些特殊字符
. 用来匹配除了换行符意外的其他任意字符,这个和sql语句中的通配符是相同的作用。
假设目标字符串是 "like and love",现在,我想找符合以下条件的单词
好,根据这个规则,我写出正则表达式
\bl..e\b
符合条件的单词有like 和 love
\w 只能匹配字母或者数字,相比于. 范围小了很多,但这样就可以用于更加精确的匹配
假设目标字符串是 "this is a book",现在,我想找到长度为4的单词,只要长度符合要求就可以了,那么正则表达式就可以这样写
\b\w\w\w\w\b
4个\w表示4个字母或数字,可以匹配的单词有 this 和 book
空白符包括空格,制表符(tab),换行符这三个很特殊的字符,假设目标字符串是
I have a dream
现在想要匹配a dream 这一部分,就可以这样写正则表达式
a\sdream
\d 只用来匹配数字,0到9的数字,假设目标字符串是
my phone number is 15801121234
现在,我想匹配字符串中的电话号,就可以这样写正则表达式
\d\d\d\d\d\d\d\d\d\d\d
这样刚好可以匹配到15801121234
假设目标字符串是
this is a book
现在,只想验证字符串是不是以this开头,那么就可以这样来写正则
^this
如果可以匹配出结果,就说明字符串是以this开头的,同理,你可以用book$来验证字符串是以book结尾的。
特殊字符被用来表示特定的字符,通过上面的例子,你应该已经发现一些特殊字符的不足之处,以\d 所举的例子来说,为了表示一个电话号,竟然用了11个\d,这样写起来是不是太费力了,有没有什么别的规则,可以让特殊字符的数量更加灵活一些?
当然是有的,下一篇教程将教你如何控制字符的数量
QQ交流群: 211426309