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."
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
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
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
