天天看点

python中正则表达式零宽断言_python 正则表达式之零宽断言

零宽断言:用于查找特定内容之前或之后的内容,但并不包括特定内容本身。

对于零宽断言来说,我认为最重要的一个概念是位置,零宽断言用于指定一个位置,这个位置应该满足一定的条件(它附近满足什么表达式),并且这个位置不是字符(因此匹配返回无结果),仅仅是一个位置,因此它们也被称为零宽断言

零宽断言重点的这一个位置,是通过一个条件:这个位置附近(前或者后)存在或者不存在一个A(A可以是一个表达式)来决定的

请忘记它的各种名字,我们只记忆公式本身:

(?=exp) :此位置后面匹配表达式exp

(?<=exp):此位置前面匹配表达式exp

(?!exp):此位置后面不匹配表达式exp

(?

注:有些地方只支持部分零宽断言,比如在线正则表达式

下面是示例:

>>> import re

>>> str = '

hello world '

>>> re.search('(?=he).*',str)

>>> re.search('(?=he).*(?<=ld)',str)

>>> re.search('(?<=

).*(?= )',str)

>>> str = '3446456sdff456a'

>>> re.search('[a-z]{3}(?!/d)',str)

>>> re.search('[a-z]{3}(?![a-z])',str)

>>> re.search('(?

<_sre.sre_match object span="(0," match="344">  #匹配到了第一个位置

>>> re.search('(?