Não cosegui entender bem qual a função do meta-char '*'.
Não cosegui entender bem qual a função do meta-char '*'.
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á
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.