我正在实验ReGEX,我已经阅读了断言有点,并看到例子,但出于某种原因,我不能让这个工作。我试着用look behind在下面的模式后面得到这个单词。
import re
s = '123abc456someword 0001abde19999anotherword'
re.findall(r'(?<=\d+[a-z]+\d+)[a-z]+', s, re.I)
结果应该是
someword
和anotherword
但我得到
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)