RegEx
RegEx (expressões regulares) são sequências de caracteres que definem um padrão de pesquisa, comumente utilizados para operações de busca e busca e substituição.
Coringas (a.k.a. wildcard)
Ao fazer uma busca, você pode substituir partes de uma palavra por caracteres coringas que correspondem a um ou mais caracteres (ou mesmo a um intervalo).
?
Corresponde a uma letra ou um número..
Corresponde a qualquer caractere1.\w
Corresponde a uma palavra (no alfabeto latino).[abc…]
ou[a|b|c|…]
Corresponde a qualquer um dos caracteres listados.[^abc]
Corresponde a qualquer caractere que não está listado ou dentro do intervalo estipulado.\d
Corresponde a qualquer dígito entre 0-9.
Intervalos
[a-z]
Corresponde ao intervalo entre “a” e “z”.
[0-9,a-f]
Corresponde a qualquer dígito ou qualquer letra.
Quantificadores
Quantificadores afetam o caractere ou grupo anterior.
*
Corresponde a zero, um ou múltiplos caracteres.+
Corresponde um ou múltiplos caracteres.{1}
Corresponde a um caracter.\d{1,4}
Corresponde a 1, 2, 3 ou 4 caracteres.
O nada nadifica.
nad.*
pode corresponder anada
ounadifica
.
Quantificadores não-avarentos
O comportamento padrão dos quantificadores é corresponder ao maior número de caracteres possível. Para ter o comportamento oposto, basta utilizar os quantificadores não avarentos, cuja especificidade é corresponder sempre ao menor número de caracteres.
+?
Corresponde a um ou mais.*?
Corresponde a zero ou mais.
Tomando a paravra Alfabeto
como exemplo:
Alf.+
corresponde aAlfabeto
..
corresponde a qualquer caractere.+
indica que estamos buscando um ou mais ocorrências.
Alf.+?
corresponde aAlfa
.- Novamente,
.
corresponde a qualquer caractere. +?
indica que estamos buscando uma ou mais ocorrências, mas preferindo sempre o menor número.
- Novamente,
Posição
Algumas expressões especiais podem ajudar a refinar a busca determinando a posição do caractere buscado.
^
Indica o início da linha.$
Indica o fim da linha, logo antes da quebra de linha.\b
Corresponde ao limite de uma palavra (no alfabeto latino).x(?=abc)
nessa expressãoabc
tem acontecer depois dex
x(?!abc)
nessa expressãoabc
não pode acontecer depois dex
(?<=abc)x
nessa expressãoabc
tem que acontecer antes dex
.(?<!abc)x
nessa expressãoabc
não pode acontecer antes dex
.
Um exemplo muito útil é ^.+
, corresponde a todos os caracteres que ocorrem partindo do começo da linha.
Outras expressões especiais
\A
Indica o início do documento.\Z
Indica o final do documento.\n
Uma quebra de linha\t
Tabulação horizontal\s
Um espaço em branco (dependendo do sistema de regex, pode corresponder ou não à quebra de linha; geralmente é o caso que sim.)\h
Um espaço em branco (nunca corresponde à quebra de linha).
Veja também
E ainda…
Em alguns casos é possível fazer com que
.
também corresponda a quebras de linha, mas esse geralmente não é o caso. No BBEdit, por exemplo, basta adicionar(?s)
à expressão.↩︎