Alguém pode explicar essa expressão peça por peça, por favor? grep '\ ([aeiou] \). \ 1'

1

Eu encontrei esta expressão para uma lição de casa que "imprime todas as linhas contendo uma vogal (a, e, i, o ou u) seguido por um único caractere seguido pela mesma vogal novamente. Assim, ele encontrará" véspera ”ou“ adão ”, mas não“ vera ”. A expressão funciona corretamente, mas estou procurando alguém que possa explicar o que cada parte faz para que eu possa entender melhor como ela funciona.

    
por Josh 15.06.2016 / 16:46

2 respostas

2

Primeiro de tudo, google para sites regex. Eles vão te ajudar muito. Por exemplo, tente regexone.

Em segundo lugar, para testar ou ajudar no entendimento de expressões regulares, consulte regex101.com - isso pode ajudar muito, já que explica o que acontece passo a passo; você também pode testar regexes.

Agora, quanto à expressão:

[aeiou]

corresponde a qualquer um dos caracteres entre colchetes (aqui: a, e, i, o ou u).

.

corresponde a qualquer caractere único


corresponde ao primeiro grupo de captura.

\(anything\)

é um grupo de captura.

O grupo de captura é o nome de uma string que você pode lembrar para uso posterior. Nesse caso, capturar qualquer caractere de [aeiou] nos permite lembrar o que combinamos. Se escrevêssemos este regex em vez disso:

[aeiou].[aeiou]

não teríamos como verificar se a primeira e segunda vogal eram as mesmas.

Assim, o seu regex significa "Coincidir com qualquer coisa que seja um dos caracteres de" aeiou ", depois qualquer caractere único e qualquer que seja o primeiro caractere".

    
por 15.06.2016 / 16:56
1

Primeiro, o \( e \) . Isso significa que "qualquer coisa dentro desses parênteses escapados é um grupo e pode ser referenciado como tal posteriormente na expressão". Dentro dela você tem [aeiou] , que significa "qualquer um dos caracteres a , e , i , o ou u ". O ponto único, . , significa "qualquer caractere único". O significa "A coisa que você encontrou quando combinou no primeiro grupo".

    
por 15.06.2016 / 16:56

Tags