我正在实验ReGEX,我已经阅读了断言有点,并看到例子,但出于某种原因,我不能让这个工作。我试着用look behind在下面的模式后面得到这个单词。

import re
s = '123abc456someword 0001abde19999anotherword'
re.findall(r'(?<=\d+[a-z]+\d+)[a-z]+', s, re.I)

结果应该是somewordanotherword
但我得到error: look-behind requires fixed-width pattern
任何帮助赞赏。

最佳答案

将其转换为Non-capturing group并从索引1中获取匹配的组。

(?:\d+\w+\d+)(\w+\b)

这里是DEMO
如果您只对[a-z]感兴趣,请在上面的regex模式中将\w更改为[a-z]。这里添加了“cc>”来确定单词边界的位置。
示例代码:
import re
p = re.compile(ur'(?:\d+\w+\d+)(\w+\b)', re.IGNORECASE)
test_str = u"123abc456someword 0001abde19999anotherword"

re.findall(p, test_str)

09-05 03:31