正则表达式:匹配重复序列

时间:2013-12-12 08:38:47

标签: python regex

我正在尝试构建一个与2个字符的重复DNA序列匹配的正则表达式。这些字符可以是相同的。

正则表达式应该匹配2个字符的重复序列至少3次,这里有一些例子:

正则表达式应匹配:

  • ATATAT
  • GAGAGAGA
  • CCCCCC

并且不应匹配:

  • ACAC
  • ACGTACGT

到目前为止,我已经提出了以下正则表达式:

[ACGT]{2}

它捕获由恰好两个字符(A,C,G或T)组成的任何序列。现在我想重复这个模式至少三次,所以我尝试了以下正则表达式:

[ACGT]{2}{3,}
([ACGT]{2}){3,}

不幸的是,第一个引发了'多次重复'错误(Python),而第二个错误只会匹配包含A,C,G和T的6个字符的任何序列。

有没有人可以帮我解决这个正则表达式? 提前谢谢。

2 个答案:

答案 0 :(得分:7)

您也许可以使用反向引用。

([ATGC]{2})\1{2,}

\1是指向第一个捕获组的反向引用,将是您捕获的内容。

regex101 demo

答案 1 :(得分:0)

一:

(AT){3}

两个

(GA){4}

C{6}

将它们结合起来!

(C{6}|(GA){4}|(AT){3})