用于查找所有匹配项的python正则表达式

2024-09-23 20:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个序列

seq = 'CCGATGACCTCACAGCCGCCTCCTGCCTTGAGGAAAGGAACTGCAATTCC'

我试图得到长度为23bp,以NGG结尾的序列,其中N=A或C或T或G`

我用p = re.compile('([ACGT]{21}GG)')当我说

for m in p.finditer(seq):
      print m.group()

我只得到CACAGCCGCCTCCTGCCTTGAGG。你知道吗

但显然CCGCCTCCTGCCTTGAGGAAAGG也匹配。为什么不上报?你知道吗


Tags: inrefor结尾group序列seqprint
1条回答
网友
1楼 · 发布于 2024-09-23 20:25:16

将regex放在lookahead断言中,以便进行重叠匹配。正则表达式无法匹配这两个字符串,因为一个匹配项包含另一个匹配项。正则表达式在默认情况下不会进行重叠匹配。您需要将模式放在lookarounds中,以便捕获重叠的匹配。你知道吗

(?=([ACGT]{21}GG))

代码:

>>> seq = 'CCGATGACCTCACAGCCGCCTCCTGCCTTGAGGAAAGGAACTGCAATTCC'
>>> p = re.compile(r'(?=([ACGT]{21}GG))')
>>> for m in p.finditer(seq):
        print m.group(1)


CACAGCCGCCTCCTGCCTTGAGG
CCGCCTCCTGCCTTGAGGAAAGG

请参见this演示右侧的捕获。你知道吗

相关问题 更多 >