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.
baby
steps
/
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
short
hands
\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
repeti
dores
\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ú
ânc
oras
^\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
http://leaverou.github.io/regexplained
http://www.regexper.com
http://regexcrossword.com
http://scriptular.com
http://rubular.com
http://regexpal.com
obrigado
Made with Slides.com