Expressões regulares (regex ou regexp) são extremamente úteis para extrair informações de qualquer texto , procurando por uma ou mais correspondências de um padrão de busca específico (isto é, uma sequência específica de caracteres ASCII ou unicode).
Os campos de aplicação variam desde a validação até a análise / substituição de strings, passando pela conversão de dados para outros formatos e para a raspagem da web.
Uma das características mais interessantes é que, uma vez que você aprendeu a sintaxe, você pode usar essa ferramenta em (quase) todas as linguagens de programação (JavaScript, Java, VB, C #, C / C ++, Python, Perl, Ruby , Delphi, R, Tcl e muitos outros) com a menor distinção sobre o suporte dos recursos mais avançados e versões de sintaxe suportadas pelos mecanismos).
Vamos começar examinando alguns exemplos e explicações.
Tópicos básicos
Âncoras – ^ e $
^ Corresponde a qualquer string que comece com O
Tente!
end $ corresponde a uma string que termina no final
^ A correspondência da string final $ exata (começa e termina com O final )
rugido corresponde a qualquer string que tem o texto rugido nele
Quantificadores – * + e {}
abc * corresponde a uma string que tenha sido seguida por zero ou mais c
Tente!
abc + corresponde a uma string que tenha sido seguida por um ou mais
abc? corresponde a uma string que tenha sido seguida por zero ou um
abc {2} corresponde a uma string que tenha sido seguida por 2 c
abc {2,} corresponde a uma string que tenha sido seguida por 2 ou mais c
abc {2,5} corresponde a uma string que tenha sido seguida por 2 até 5 c
a (bc) * corresponde a uma string que tenha seguido por zero ou mais
cópias da sequência bc
a (bc) {2,5} corresponde a uma string que tenha seguido por 2 até 5
cópias da sequência bc
Operador OR – | ou []
a (b | c) corresponde a uma string que tenha seguido por b ou c
Tente!
a [bc] igual ao anterior
Classes de caracteres – d w s e.
d corresponde a um único caractere que é um dígito
Tente!
w corresponde a um caractere de palavra (caractere alfanumérico mais
sublinhado)
Tente!
s corresponde a um caractere de espaço em branco (inclui guias e linha
rompe)
. corresponde a qualquer caractere
Tente!
Use o .
operador com cuidado, pois muitas vezes classe ou classe de caracteres negados (que vamos cobrir em seguida) são mais rápidos e precisos.
d
, w
e s
também apresentam suas negações com D
, W
e S
respectivamente.
Por exemplo, D
executará a correspondência inversa em relação àquela obtida com d
.
D corresponde a um único caractere não dígito
Tente!
Para ser tomado literalmente, você deve escapar dos caracteres ^.[$()|*+?{
Com uma barra invertida como eles têm um significado especial.
$ d corresponde a uma string que tem um $ antes de um dígito
Tente!
Observe que você também pode combinar caracteres não imprimíveis, como tabs t
, novas linhas n
, retornos de carro r
.
Bandeiras
Estamos aprendendo a construir um regex mas esquecendo um conceito fundamental: flags .
Uma regex geralmente vem com este formulário / abc /
, onde o padrão de pesquisa é delimitado por dois caracteres de barra /
. No final, podemos especificar um sinalizador com esses valores (também podemos combiná-los):
- g (global) não retorna após a primeira partida, reiniciando as pesquisas subseqüentes do final da partida anterior
- m (linha múltipla) quando ativado
^
e$
corresponderão ao início e ao final de uma linha, em vez de toda a cadeia - Eu (insensível) torna toda a expressão insensível a maiúsculas e minúsculas (por exemplo,
/aBc/i
corresponderia aAbC
)