我想使用与文本文件中的模式“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)*)$
这是按照你写的做的。