Reg Ex


de uma vez por todas!



O que são Expressões Regulares?




  • "regex"
  • símbolos que representam um padrão de texto.  
  • ferramenta para encontrar e substituir texto.





babysteps




/pattern/modifiers


slash (/) indica o início e fim de um pattern
pattern representa um padrão de strings
modifiers (ou, flags) são atributos que agem no pattern




/literal/


"Toda vez que você quer identificar uma
palavra de forma literal, basta fazer nada."
:)




/id[ée]ia/


"Depois da revisão ortográfica, e dependendo da data de 
publicação de um documento,  seria impossível 
obter  ideia  e idéia  em  apenas uma pergunta. "
classe de caractere




/lo+ve/


"All you need is love,
loooove ...
love is all you need."
repetidores




/[hue]*/i


hueuehuehuehUHEuHEuHEuHEuEHhue
modificadores




/omg[!1]*/i


omg , you gotta be kidding.

omg!  Are you serious?

omg!1!!  I don't believe

OMG!!!!1!!! OH MY GOD!
classe de caractere 
repetidores
modificadores









até aqui...




/see[^mn]/


see.
seek
sees
seem
seen
negação




/l[a-z]ve/


lave -me!
leve -me.
love  me
live  with me.
ranges




/[0-9.\-]*/ 


338.382.623-40
ranges









 we need to go deeper 



shorthands


\w       # mesmo que [A-Za-z0-9_]
\W      # mesmo que [^A-Za-z0-9_]
\d        # mesmo que [0-9]
\D       # mesmo que [^0-9]
\s        # mesmo que [ \t\r\n]
\S        # mesmo que [^ \t\r\n]
.          # mesmo que [^\n]




/l\wve/


lave-me!
leve-me.
love me
live with me.
shorthand



repetidores


\d?          # nenhuma ou uma vez (ou seja, opcional)
\d+          # uma ou muitas vezes
\d*          # nenhuma ou muitas vezes
\d{4}       # quatro vezes, owkay?
\d{2, 4}   # de duas a quatro vezes
\d{2,}      # no mínimo duas vezes
\d{0,9}    # de zero até nove vezes




/\d{4,5}-\d{4}/


99555-1234
8544-2356
544-2356
32234434
shorthand
repetidores



/-?[\d.,]+/ 


-1
789
999999
3.141516
9,99
9,99,99
-,
tudo nú




âncoras


^\d       # partindo do começo da linha
\d$       # partindo do final da linha
^\d$     # logo, preenchendo toda a linha




/^\w+@[a-zA-Z_]+\.[a-zA-Z]{2,3}$/


comunica@digitalbox.cc
liperuf@gmail.com
teste@dominio.com.br

porra ficando séria



/

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
| "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")
@ (?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
| \[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)
\])

/


http://www.regular-expressions.info/email.html




/plura(l|is)/


"Perfeito para lidar com plurais
Mesmo com plural na forma singular."
grupos




/<([\w\-]+)><\1>/


<html></html>
backreference



Por que é tão treta?


  • "novos" símbolos
  • ordem importa
  • implementação diferente em cada linguagem
  • leitura confusa
  • ausente do cotidiano




Por que eu deveria dar atenção?


  • você é programador. Deixe o trabalho para a máquina.
  • seu tempo é valioso.
  • você trabalha com texto o dia inteiro. Lendo ou escrevendo.
  • regex separa homens dos mininu.


Referências









obrigado

RegEx

By Fellipe Cicconi

RegEx

Regex de uma vez por todas!

  • 284