【发布时间】:2020-08-08 04:18:14
【问题描述】:
我正在尝试使用 python 中的 re 包匹配我的字符串 QGYGQGYQQG 中的所有 GY 或 YG 组合。我将所有这些匹配项放在一个字典中以供将来查找。
我遇到的问题是当Y 两侧有G 时:基本上我的正则表达式无法正确捕获GY 和 GYG 中的YG。
这是我目前的代码:
import re
seq = 'QYGQGYGQQG'
regex = re.compile('(GY|YG)|(?<=Y)G')
iterator = regex.finditer(seq)
dd = {}
for matchedobj in iterator:
dd[matchedobj.group()] = dd.get(matchedobj.group(), []) + [matchedobj.start()]
输出:
{'G': [6], 'GY': [4], 'YG': [1]}
【问题讨论】:
-
较新的
regex模块支持重叠匹配。 -
只需将
(?=(YG|GY))与 findall 一起使用 -
请参阅 this 以获取同样为您提供索引的
finditer替代方案 -
感谢所有提示!我不知道“重叠匹配”是一回事..
标签: python regex string search