我正在使用Python 3.6。
我的目标是匹配一个可能匹配多个字符串、重叠和/或从同一位置开始的正则表达式,例如:
re.findall('B.*A','BADACBA')
Run Code Online (Sandbox Code Playgroud)
这使:
['BADACBA']
Run Code Online (Sandbox Code Playgroud)
但我想要:
['BADACBA','BADA','BA','BA']
Run Code Online (Sandbox Code Playgroud)
(第二个是因为字符串中'BA'有两个实例)'BA'
根据如何使用正则表达式查找重叠匹配的建议?,我尝试将其包含在前瞻中:
re.findall('(?=(B.*A))','BADACBA')
Run Code Online (Sandbox Code Playgroud)
这使:
['BADACBA', 'BA']
Run Code Online (Sandbox Code Playgroud)
哪个更好,但仍然不是我想要的。
我也尝试过该regex模块:
regex.findall('B.*A','BADACBA',overlapped=True)
Run Code Online (Sandbox Code Playgroud)
但它仍然返回:
['BADACBA', 'BA']
Run Code Online (Sandbox Code Playgroud)
我还没能找到能找到所有匹配项的东西。由于我有很多这样的正则表达式,因此硬编码的解决方案没有多大帮助。有没有一个模块/函数可以做到这一点?
谢谢!