我想匹配特定字符长的字符串部分(一般情况:它将是一个随机的模式),并将在整个字符串的下一部分再次匹配。
对于给定的字符串示例:
GAC ATCG GTAACGCATGAATT GTCA GGGTACGCACTGACATG ATCG GTTACGAAA GTCA C
,
ATCG GTAACGCATGAATT GTCA GGGTACGCACTGACATG ATCG
GTCA GGGTACGCACTGACATG ATCG GTTACGAAA GTCA
将是最终结果。
有人可以帮忙吗?
答案 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')]`