匹配先前匹配模式的重复精确字符串

时间:2013-10-25 14:51:57

标签: python regex regex-group

我想匹配特定字符长的字符串部分(一般情况:它将是一个随机的模式),并将在整个字符串的下一部分再次匹配。

对于给定的字符串示例:

  

GAC ATCG GTAACGCATGAATT GTCA GGGTACGCACTGACATG ATCG GTTACGAAA GTCA C

  

ATCG GTAACGCATGAATT GTCA GGGTACGCACTGACATG ATCG

     

GTCA GGGTACGCACTGACATG ATCG GTTACGAAA GTCA

将是最终结果。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您可以将此模式用于至少4个核苷酸:

(?=(([ACTG]{4,}).*\2))

但您可以选择所需的数字或固定数字,例如(?=(([ACTG]{5}).*\2))

Python中的例子:

import re

print re.findall(r'(?=(([ACTG]{4,}).*\2))', 'GACATCGGTAACGCATGAATTGTCAGGGTACGCACTGACATGATCGGTTACGAAAGTCAC')

结果:

[('GACATCGGTAACGCATGAATTGTCAGGGTACGCACTGACAT',     'GACAT'),
 ('ACATCGGTAACGCATGAATTGTCAGGGTACGCACTGACAT',      'ACAT'),
 ('ATCGGTAACGCATGAATTGTCAGGGTACGCACTGACATGATCGGT', 'ATCGGT'),
 ('TCGGTAACGCATGAATTGTCAGGGTACGCACTGACATGATCGGT',  'TCGGT'),
 ('CGGTAACGCATGAATTGTCAGGGTACGCACTGACATGATCGGT',   'CGGT'),
 ('GGTAACGCATGAATTGTCAGGGTA',                      'GGTA'),
 ('ACGCATGAATTGTCAGGGTACGCA',                      'ACGCA'),
 ('CGCATGAATTGTCAGGGTACGCA',                       'CGCA'),
 ('CATGAATTGTCAGGGTACGCACTGACATGA',                'CATGA'),
 ('ATGAATTGTCAGGGTACGCACTGACATGA',                 'ATGA'),
 ('GTCAGGGTACGCACTGACATGATCGGTTACGAAAGTCA',        'GTCA'),
 ('TACGCACTGACATGATCGGTTACG',                      'TACG')]`