Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Regex meta-char *

Não cosegui entender bem qual a função do meta-char '*'.

4 respostas

Olá João,

um meta-char é um caractere que tem uma função especial na nossa expressão regular. No caso, o * representa um número arbitrário do caractere que veio logo antes dele. Ou seja, ele representa o caractere anterior, zero ou mais vezes.

Assim, a expressão regular ola* aceitaria as seguintes palavras:

ola
olaa
olaaa
ol

Como assim, "número abitrário"? É que as definições que eu acho, não resumem muito bem.

Por exemplo: "Matches the preceding subexpression zero or more times." Como assim, 0 ou mais vezes?

E sobre seu exemplo, ele aceitaria somente o "o" também? Como ele aceita o "ol"?

Obrigado desde já

solução!

Então, no meu exemplo, apenas o caractere a é alvo do meta-caractere *. Assim, a expressão regular ola* equivale em linguagem natural ao seguinte:

Aceite todas as palavras que:
1 - Comecem com o caractere 'o'
2 - Tenham logo depois o caractere 'l'
3 - Tenham logo depois uma quantidade qualquer do caracter 'a'

Assim, quando um caractere normal aparece em uma expressão regular, ele deve ser interpretado literalmente, como os caracteres o e l no exemplo. Já o caractere a é afetado pelo meta-caractere *, assim ele tem o seu significado alterado.

O significado que antes era Apenas um e exatamente um do caractere se altera para Zero, uma ou mais aparições desse caractere

Então, no caso do exemplo, essas e somente essas palavras seriam aceitas:

ol
ola
olaa
olaaa
...
olaaaaaaaaaaaaaaaaaaa
...

Note que a lista é infinita, mas mesmo assim não aceita todas as palavras. Por exemplo, as palavras

la
oaaa
aaa

e muitas outras não seriam aceitas pela expressão regular do exemplo.