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.