小编bob*_*ack的帖子

正则表达式包括具有相同开始的重叠匹配

我正在使用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)

我还没能找到能找到所有匹配项的东西。由于我有很多这样的正则表达式,因此硬编码的解决方案没有多大帮助。有没有一个模块/函数可以做到这一点?

谢谢!

python regex python-3.x

5
推荐指数
1
解决办法
1358
查看次数

标签 统计

python ×1

python-3.x ×1

regex ×1