Então, para já matar sua curiosidade, aqui estão os tão falados metacaracteres-padrão que serão nossos personagens das próximas páginas: . ? * + ^ $ | [ ] { } ( ) \. E aí, sentiu um frio na barriga? Cada simbolozinho desses tem sua função específica, que pode mudar dependendo do contexto no qual está inserido, e podemos agregá-los uns com os outros, combinando suas funções e fazendo construções mais complexas. Olha, ainda dá tempo de fechar o livro e voltar a assistir à novela....
Então deixa eu te assustar mais um pouquinho. Além destes, temos outros metacaracteres estendidos que foram criados posteriormente, pois tarefas mais complexas requisitavam funções mais específicas ainda. E para terminar de complicar, sua sintaxe de utilização não é a mesma para todos os programas que suportam expressões regulares.
Bem, já que você não desistiu (eu tentei), vamos logo ao que interessa, e para começar vamos dar nomes aos bois. Leia, releia e "treleia" esta lista, repetindo para si mesmo e associando o nome ao símbolo, pois estas palavras farão parte de sua vida, de sua rotina. Acostume-se com os nomes e não os mude.
meta mnemônico
------------------------------
. ponto
[] lista
[^] lista negada
? opcional
* asterisco
+ mais
{} chaves
^ circunflexo
$ cifrão
\b borda
\ escape
| ou
() grupo
\1 retrovisor
Agora que sabemos como chamar nossos amigos novos, veremos uma prévia, um apanhado geral de todos os metacaracteres e suas funções. Eles estão divididos em quatro grupos distintos, de acordo com características comuns entre eles.
Representantes
meta mnemônico função --------------------------------------------------------------- . ponto um caractere qualquer [...] lista lista de caracteres permitidos [^...] lista negada lista de caracteres proibidos
Quantificadores
meta mnemônico função
---------------------------------------------------------------
? opcional zero ou um
* asterisco zero, um ou mais
+ mais um ou mais
{n,m} chaves de n até m
Âncoras
meta mnemônico função --------------------------------------------------------------- ^ circunflexo início da linha $ cifrão fim da linha \b borda início ou fim de palavra
Outros
meta mnemônico função --------------------------------------------------------------- \c escape torna literal o caractere c | ou ou um ou outro (...) grupo delimita um grupo \1...\9 retrovisor texto casado nos grupos 1...9
Aaaah, ? e * eu já uso na linha de comando!
Opa, não confunda! Os curingas usados na linha de comando para especificar nomes de arquivos, como *.txt, relatorio.{txt,doc} e guia-??.html não são expressões regulares. São curingas específicos de nomes de arquivo, e apesar de parecidos, são outra coisa e os significados de seus símbolos são diferentes dos das expressões, então o melhor que você faz agora é esquecer esses curingas, senão eles podem confundi-lo e atrapalhar seu aprendizado.