用于匹配重复的两个字母模式的正则表达式 (grep)

用于匹配重复的两个字母模式的正则表达式 (grep)

我想使用与文本文件中的模式“ATATAT”(任意长度)和/或“GCCGCCGCC”(同样任意长度)匹配的正则表达式。我只有四个选项,其中一个应该可以工作,但我已经在包含这些模式的文本文件上多次尝试了所有这些选项。但是下面的任何代码要么不返回任何内容,要么最终出现错误:“grep:无效的反向引用”。也许我根本不应该使用 grep ?

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

主要是,我使用的代码如下:

grep 'one_of_the_patterns_above' DNA_sequence_file.fasta

该文件看起来像这样:

>sampled sequence 1 consisting of 500 bases.
GCAAAGTAGCCGAGGTCAGGGCATGTCAATGATAGCGCGAAAAGGTCACCACGAGAAGCG
GCACTCGGCCACGGATTGGTGGCACTTCATATGGAAACGCGACGACCGATAAAAACACAA
CGAAACCCAATTGGAATGAGATTTTCCTGAAACCGCAGCGAACCCAACCAAGCGGGAATA
AAGTCGGGAAGTCTAAACGAGATTAGCAGAATCCACCTCAGAATGACTGATGCCATGTAG
GCGCAGCAATAGATTACCGAAAGAGAAACACAGCAACGGATACATACAACTCAAGGGAAG
AGCACCTTTCGCTGAGAGGAGACGCCTTACAAACTATCCAGGGGTTTGAACAAGACAGGT
CGAAAAGCGGCCCTCTTCACAACCAGGTCAAGCGCGACTCGAGACAAGTATTCCCAAAGT
CCAAAAAAGAATCCTACAGAATCCCATCAAAGCATTTGTAGAAAGACATGGCCTACCAGC
TGCGCAAAGGACACATTACC

答案1

看起来您想要匹配“AT”重复至少两次,或者在您的另一个示例中,“GCC”重复至少两次。这些分别是:

(AT){2,}
(GCC){2,}

请注意,您必须使用grep -E这些模式来匹配。 (正则表达式没有一个单一、一致的语法可以在不同的工具中以相同的方式工作,因此您可能必须根据最终使用的工具进行调整。)

答案2

所有模式都很糟糕,它们以任何顺序匹配任何 ATGC。正确的正则表达式是:

^((AT)*|(GCC)*)$

这是按照你写的做的。

相关内容