我已经看过几个如何实现重叠匹配的例子。答案似乎是前瞻性断言,所以我使用了它但是得到了一个错误(我在正则表达式上很弱,所以请原谅愚蠢的错误!)。
问题:找到字符串_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#
中字符串#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#__#_________####_#_##__
(即16对)的所有重叠匹配项。我可以看到至少有两场比赛。
这是我尝试过的代码:
import re
pattern = r'?=((_#){16})'
row='#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#__#_________####_#_##__'
re.finditer(pattern, row)
这引发了一个例外,说“没有什么可重复的”。请帮我理解我做错了什么。
答案 0 :(得分:-1)
好笑,但我自己找到了。我在前瞻表达式周围缺少括号!它必须是(?=...)
而不是?=...