注册表。捕捉侧边字符[重复]


我正在努力匹配所有 GYYG 我的字符串中的组合 QGYGQGYQQG 使用 re 包的python中。我把所有这些匹配的数据都放在一个dict中,以便将来查找。

我遇到的问题是当 Y 两旁是 G: 基本上,我的regex不能同时捕获 GY YGGYG 正确。

这是我目前的代码。

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 模块(或使用lookarounds)。

import regex as re
seq = 'QYGQGYGQQG'

matches = re.findall(r'GY|YG', seq, overlapped=True)
print(matches)
# ['YG', 'GY', 'YG']

或者 – 用 re.finditer:

for m in re.finditer(r'GY|YG', seq, overlapped=True):
    print(m.span())

这将产生

(1, 3)
(4, 6)
(5, 7)

给TA打赏
共{{data.count}}人
人已打赏
未分类

Docker - 访问主机程序

2022-9-9 7:09:24

未分类

在c中的反向整数给出了溢出值

2022-9-9 7:09:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索