我在Python中编写了一个负面的lookbehind断言表达式,它执行以下函数来解析纯文本文件:
在http:// * ** * ** * ** *之后不符合任何内容 ;但是当它不在http:// * 链接
内时将匹配该模式Example:
http://www.test.com/aa4 cd6
bx2 vq9
yu9 http://www.bh9.com/cj3
Matches: cd6,bx2,vq9 and yu9
所以我尝试了像
这样的正则表达式r'(?<!http://(.*))([a-z][a-z][0-9])'
r'(?<!http://*)([a-z][a-z][0-9])'
他们没有工作。
如何添加。*或在Python中断言正则表达式后面的负面看法中做类似的opearion。
答案 0 :(得分:2)
问题:Lookbehind不允许长度不固定的模式。
快速入侵:也许以下的正则表达式可以完成这项工作?
r'(?<![./])[a-z][a-z][0-9]'
它的工作原理如下:
>>> str = """http://www.test.com/aa4
... bx2 vq9
... http://www.bh9.com/cj3
... """
>>> re.findall(r'(?<![./])[a-z][a-z][0-9]',str)
['bx2', 'vq9']
或 - 作为另一种解决方案 - 使用正则表达式匹配网址来切断字符串中的所有网址,然后搜索r'[a-z][a-z][0-9]'
答案 1 :(得分:1)
那是不可能的。 Python只允许固定长度的lookbehinds。这意味着在外观中没有量词。
上的功能列表