Python正则表达式前向否定断言使用示例,python正则表达式,正则表达式的断言在有些场


正则表达式的断言在有些场景下很有用,我们通过一个真实的使用场景介绍下python的前向否定断言的使用。

假定我们要处理一段html,我们要替换掉相对url,例如<a href="abc.html">text</a> 这个a标签我们要替换成text,而对于<a href="http://byrx.net/code-snippet/">代码</a> 这样的a标签则要保留不做替换。

这个应用场景下就需要判断A标签的href属性如果不是以http://开头则匹配,即要做前向否定的断言.

前向否定断言的语法: (?!pattern) 括号中是?!然后是要否定的模式。

下面我们看下实现的全部代码:

import rep = re.compile(r'<a href="(?!https?://)[^"]+">(?P<txt>.*?)</a>')input1 = '<a href="abc">link text</a>'input2 = '<a href="http://byrx.net">link text</a>'print p.sub(r'\g<txt>',input1)print p.search(input1)print p.search(input2)

理解了前向否定断言其他几种断言,包括前向肯定断言,后向肯定断言,后向否定断言都很容易理解了,其语法说明如下。

前向肯定断言的语法 (?=pattern)前向否定断言的语法 (?!pattern)后向肯定断言的语法 (?<=pattern)后向否定断言的语法 (?<!pattern)

其他几种断言的用法就不再赘述。

评论关闭