2013-10-25 103 views
0

我想匹配某些字符長度的字符串部分(通用大小寫:它將是一個隨機的模式),並且會在整個字符串的下一部分再次匹配。匹配重複之前匹配的模式的確切字符串

對於給定的字符串例子:

GAC ATCG GTAACGCATGAATT GTCA GGGTACGCACTGACATG ATCG GTTACGAAA GTCAÇ

ATCG GTAACGCATGAATT GTCA GGGTACGCACTGACATG ATCG

GTCA GGGTACGCACTGACATG ATCG GTTACGAAA GTCA

將是最終的結果。

任何人都可以幫忙嗎?

回答

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')]`