Expressões regulares (grep) para corresponder a um padrão repetitivo de duas letras

3

Eu quero usar uma expressão regular que corresponda ao padrão 'ATATAT' (de qualquer tamanho) e / ou 'GCCGCCGCC' (novamente de qualquer tamanho) em um arquivo de texto. Eu tenho apenas quatro opções e uma delas deve funcionar, mas tentei todas elas em um arquivo de texto contendo esses padrões várias vezes. Mas qualquer um dos códigos abaixo não retorna nada ou acaba em erro: "grep: Referência de volta inválida". Talvez eu não devesse estar usando o grep?

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

Principalmente, o código que estou usando é o seguinte:

grep 'one_of_the_patterns_above' DNA_sequence_file.fasta

E o arquivo se parece com algo assim:

>sampled sequence 1 consisting of 500 bases.
GCAAAGTAGCCGAGGTCAGGGCATGTCAATGATAGCGCGAAAAGGTCACCACGAGAAGCG
GCACTCGGCCACGGATTGGTGGCACTTCATATGGAAACGCGACGACCGATAAAAACACAA
CGAAACCCAATTGGAATGAGATTTTCCTGAAACCGCAGCGAACCCAACCAAGCGGGAATA
AAGTCGGGAAGTCTAAACGAGATTAGCAGAATCCACCTCAGAATGACTGATGCCATGTAG
GCGCAGCAATAGATTACCGAAAGAGAAACACAGCAACGGATACATACAACTCAAGGGAAG
AGCACCTTTCGCTGAGAGGAGACGCCTTACAAACTATCCAGGGGTTTGAACAAGACAGGT
CGAAAAGCGGCCCTCTTCACAACCAGGTCAAGCGCGACTCGAGACAAGTATTCCCAAAGT
CCAAAAAAGAATCCTACAGAATCCCATCAAAGCATTTGTAGAAAGACATGGCCTACCAGC
TGCGCAAAGGACACATTACC
    
por l.. 18.02.2017 / 20:11

2 respostas

2

Parece que você quer corresponder "AT" repetido pelo menos duas vezes ou, no outro exemplo, "GCC" repetido pelo menos duas vezes. Aqueles seriam, respectivamente:

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

Observe que você precisará usar grep -E para que esses padrões correspondam. (Não existe uma sintaxe única e consistente para expressões regulares que funcione de maneira idêntica em todas as ferramentas, portanto você pode ter que se adaptar dependendo de qual delas usar.)

    
por 18.02.2017 / 20:20
-1

Todos os padrões são ruins, eles correspondem a qualquer ATGC em qualquer ordem. O regexp correto é:

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

Isso está fazendo o que você escreveu.

    
por 18.02.2017 / 20:41