Expressões Regulares – Parte 01

 Vamos começar com um pouco de história…

Por volta de 1943, dois neurologistas publicaram um estudo onde explicavam sua teoria com relação ao funcionamento de nossos neurônios. Com base nesse estudos, alguns anos depois um matemático veio fazer suas “bruxarias” e descrever isso algebricamente, criando o que chamou de grupos regulares.
Esses grupos regulares foram evoluindo e se transformando em expressões, e assim surgiram as “Expressões Regulares” que por mais de 20 anos foi muito estudado pelos matemáticos da época. Já no mundo da computação, as ERs como são carinhosamente conhecidas, teve sua primeira aparição em 1968 como algoritmo de busca do editor de texto qed, o qual deu origem ao ed, sed, e dentre outros comandos o que você provavelmente já deve conhecer… o GREP.
Pra finalizar essa historinha é interessante citar também que em 1986 foi criado um pacote em C chamado regex, que se popularizou de vez.

 Tá, mas afinal, o que são Expressões Regulares?

 

De acordo com o Wikipedia:

“Expressões Regulares provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres.”

ERs podem ser usadas sempre que precisar validar ou buscar um padrão de texto que pode ser variável, exemplos disso são:

  • Data;
  • Hora;
  • Nome de pessoas;
  • URL;
  • Endereço IP;
  • RG, CPF, Cartão de. Crédito;

Dentre muitas outras coisas.

 

Vamos para exemplos práticos, supomos que você tenha uma lista com nomes de animais e quer procurar por “gato”, “rato” e “pato” ao mesmo tempo, como faria isso?

Utilizando ER ficaria simples assim:

[grp]ato – como os três nomes citados acima são terminados em “ato” apenas a primeira letra vai variar, por isso colocamos as possibilidades dentro de [ ], no caso g,r,p.

Outro exemplo, voce tem uma lista de nomes e quer buscar o nome “Mateus” com e sem o h, além disso a lista também contém nomes que não começam com letra maiúscula, então as possibilidades seriam: Matheus, matheus, Mateus, mateus.

Ficaria assim:

[Mm]at[h]?eus – Logo veremos todos os metacaracteres e alguns exemplos…

vamos testar com Rafael e Raphael…

[Rr]a[fp]h?ael

 Pegou a jogada? Agora vamos lá ver como essa magia funciona…

As Expressões Regulares são constituídas de metacaracteres, (iiiihh já vem complicar de novo), calma, é simples, não se assuste com o nome.

Logo abaixo podemos ver uma lista com os principais metacaracteres (o que são metacaracteres), com seus nomes e sua função:

 

 

Metacaractere

Nome

Função

.    Ponto    Um caractere qualquer
[ ]    Lista    Lista de caracteres permitidos
[^]    Lista negada    Lista de caracteres proibidos
?    Opcional    Zero ou um
*    Asterisco    Zero, um ou mais
+    Mais    Um ou mais
{ }     Chaves    Ex. {n,m}: De n até m
^    Circunflexo    Inicio da linha
$    Cifrão    Fim da linha
\    Escape    Ex. \c : Torna literal o caractere c

 

Exemplos, quero exemplos…

 

O  metacaractere ponto: ” . “

Casa com um caractere qualquer como por exemplo: números, simbolos (@, $,#, etc.), tab, qualquer caracter.

te.te = teste, texte, teXte, te5te, te$te, te-te, …

 

A lista: [ ]

Casa somente com o que for especificado em seu interior, por exemplo, só as vogais: [aeiou]

L[aeiou]nux= Lanux, Lenux, Linux, Lonux, Lunux

Com lista também podemos utilizar intervalos, como [a-z] de a até z, [A-Z] de A até Z, [0-9] de 0 a 9 e etc, dá até pra escrever um outro post sobre o assunto em breve…

 

A lista negada [^]

Casa com qualquer caractere, exceto os especificados em seu interior, exemplo:

v[^aeiou]g[^aeiou]l= v0g4l, v(g_l, vbgcl, … (qualquer coisa menos vogal onde tem a lista negada)

 

O opcional: ?

Pode ou não ter o caractere precedido por ?, exemplos:

carros? = carro, carros

pular? = pula, pular

OBS: Ele encontra somente uma vez o caractere.

Exemplo utilizando o Opcional “?” e a Lista ” [] “:

Agora sei ER[!.s?]? =

Agora sei ER!

Agora sei ER.

Agora sei ERs

Agora sei ER?

 

O asterisco: *

O asterisco assim como o opcional, casa qualquer caractere antes dele, a diferença é que pode ter uma quantidade infinita deste caractere.

aure*lio

aurelio
aureeelio
aureeeeelio

É muito comum utilizarmos o asterisco junto com o ponto em expressões no dia-a-dia, assim pode-se pegar qualquer caractere no trecho específico e em qualquer quantidade.

Joaquim .* laranjas

Joaquim tem 20 laranjas

Joaquim não tem laranjas

Joaquim perdeu as laranjas

 

O mais: +

A diferença entre o mais e o asterisco também é bem pequena, com o mais o caractere precedente deve casar pelo menos uma vez, ao contrário do asterisco.

 

As Chaves: {}

Utilizamos as chaves basicamente para especificar a quantidade que poderá ser repetida a expressão utilizada, como em:

1{1,3} que casará com 1, 11 e 111 só.

 

O Circunflexo: ^

Este é um dos mais conhecidos, o circunflexo é utilizado para marcar o inicio da linha.

Para pegar as linhas que começam com linhas minúsculas: ^[a-z]

Pegar linhas que começam com números: ^[0-9]

e assim por diante…

 

O Cifrão: $

Tão útil quanto o circunflexo, o cifrão marca o fim da linha, assim para buscarmos linhas que não terminam com ; por exemplo utilizaremos a seguinte expressão: [^;]$

Ou encontrar linhas que terminam com um número: [0-9]$

E por fim, pelo menos por enquanto…

 

O escape: \

O escape é utilizado para tirar o poder de um metacaractere, ou seja, podemos utilizar um * literal em algum trecho, sem que ele seja interpretado, ou um . , [ e etc.

Basta colocar o escape (barra invertida) antes desses caracteres e os mesmos perderam seus poderes.

 


E é isso ai!

Somente a prática leva à perfeição, então pratique bastante e caso tenha alguma dúvida, crítica ou sugestão deixe um comentário aqui mesmo neste post ou nas redes sociais, estaremos por aqui.

🙂

 


 

Sites para praticar:

Referências

 

 

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Show Buttons
Hide Buttons