E tudo estava indo bem na sua vida nova de criador de ERs, quando de repente...
Ó não, preciso colocar um * literal, o que fazer?
Se você está atento, lembrará que a lista tem suas próprias regras e que...
Dentro da lista, todo mundo é normal!
Isso! Cara esperto. Precisou de um caractere que é um meta, mas você quer seu significado literal, coloque-o dentro de uma lista, então lua[*]
casa lua*. O mesmo serve para qualquer outro metacaractere. Maaaaaas, para não precisar ficar toda hora criando listas de um único componente só para tirar seu valor especial, temos o metacaractere criptonita \
, que "escapa" um metacaractere, tirando todos os seus poderes.
Escapando, \*
é igual a [*]
que é igual a um asterisco literal. Similarmente podemos escapar todos os metacaracteres já vistos: \.
, \[
, \]
, \?
, \+
, \{
, \}
, \^
e \$
. E para você ver como são as coisas, o escape é tão poderoso que pode escapar a si próprio! O \\
casa uma barra invertida \
literal.
Ah! É claro, escapar um circunflexo ou cifrão somente é necessário caso eles estejam em suas posições especiais, como casar o texto ^destaque^, em que ambos os circunflexos são literais, mas o primeiro será considerado uma âncora de começo de linha caso não esteja escapado.
Então, agora que sabemos muito sobre ERs, que tal uma expressão para casar um número de RG no formato n.nnn.nnn-n? É fácil!
[0-9]\.[0-9]{3}\.[0-9]{3}-[0-9]
Resumão
\*
= [*]
= asterisco literal.