Tutorial Regex – Um rápido cheatsheet por exemplos

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 a AbC )