使用小括号的时候,还有很多特定用途的语法。下面列出了最常用的一些:
1.零宽断言
有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面或后面需要是特定的内容,但我们又不想要前面或后面的这个特定的内容,这时候就需要零宽断言的帮助了。所谓零宽断言,简单来说就是匹配一个位置,这个位置满足某个正则,但是不纳入匹配结果的,所以叫“零宽”,而且这个位置的前面或后面需要满足某种正则。
比如对于一个字符串:”finished going done doing”,我们希望匹配出其中的以ing结尾的单词,就可以使用零宽断言:
import re
s = 'finished going done doing'
p = re.compile(r'\b\w+(?=ing\b)')
print [x + 'ing' for x in re.findall(p,s)]
['going', 'doing']
这里正则中使用的(?=ing\b)
就是一种零宽断言,它匹配这样一个位置:这个位置有一个’ing’字符串,后面跟着一个’\b’符号,并且这个位置前面的字符串满足正则:\b\w+
,于是匹配结果就是:['go','do']
http://blog.csdn.net/dnxbjyj/article/details/70946508
https://www.cnblogs.com/linux-wangkun/p/5978462.html