Post on 04-Jun-2015
description
EXPRESSÕES REGULARES
BIO LABS #5
LUCAS CATÓN
POR QUE UMA APRESENTAÇÃO SOBRE EXPRESSÕES REGULARES?
MUITO ÚTEIS
DEPOIS DE POUCO TEMPO, TUDO PARECE MAIS FÁCIL
ASSUNTO CONSISTENTE, NÃO SOFRE GRANDES ALTERAÇÕS
NOMES...
EXPRESSÕES REGULARES
EXPREG
ER
REGULAR EXPRESSIONS
REGEX
REGEXP
O QUE É?
SEGUNDO A WIKIPEDIA...
“(...) PROVÊ UMA FORMA CONCISA E FLEXÍVEL DE IDENTIFICAR CADEIAS DE CARACTERES DE INTERESSE,
COMO CARACTERES PARTICULARES, PALAVRAS OU PADRÕES DE CARACTERES.”
?
“(...) UMA MANEIRA DE PROCURAR UM TEXTO
QUE VOCÊ NÃO LEMBRA EXATAMENTE COMO É,
MAS TEM IDÉIA DAS VÁRIAÇÕES POSSÍVEIS.”
PRA QUE SERVE?
POR EXEMPLO
Saqueto
Sacketo
Sacheto
Sachetto
Sa(qu|ch|ck)ett?o
PRA QUE SERVE?
“(...) UMA MANEIRA DE PROCURAR UM TEXTO
QUE VOCÊ NÃO LEMBRA EXATAMENTE COMO É,
MAS TEM IDÉIA DAS VÁRIAÇÕES POSSÍVEIS.”
PRA QUE SERVE?
VALIDAR EMAIL, IP, TELEFONE, DATA, CEP, CPF..
POR EXEMPLO
Endereço IP
\d{1,3} \. \d{1,3} \. \d{1,3} \. \d{1,3}
255 . 180 . 45 . 80
192 . 168 . 120 . 55
300 . 400 . 500 . 600
POR EXEMPLO
Endereço IP
\b(?:(?: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]?)\b
255 . 180 . 45 . 80
192 . 168 . 120 . 55
300 . 400 . 500 . 600
TAMANHO NÃO É DOCUMENTO.
ÀS VEZES UMA REGEX MENOR É MELHOR...E ÀS VEZES NÃO.
RESUMINDO...
“(...) É UM MÉTODO FORMALDE SE ESPECIFICAR UM PADRÃO DE TEXTO.”
ONDE POSSO USAR?
VAMOS APRENDER!
ER...
SÃO METACARACTERES
QUE CASAM UM PADRÃO.
. ? * + ^ $ | [ ] { } ( ) \
“MATCH” “PATTERN”
UM EXEMPLO RÁPIDO
[grp]ato
gatoratopato
METACARACTERES
Metacaractere Nome
. Ponto
[] Lista
[^] Lista negada
? Opcional
* Asterisco
+ Mais
{} Chaves
Metacaractere Nome
^ Cicunflexo
$ Cifrão
\b Borda
\ Escape
| Ou
() Grupo
\1 $1 Retrovisor
Metacaractere Nome Função
. Ponto Um caracter qualquer
[...] Lista Lista de caracteres permitidos
[^...] Lista negada Lista de caracteres proibidos
REPRESENTANTES
Metacaractere Nome Função
? Opcional Zero ou um
* Asterisco Zero, um ou mais
+ Mais Um ou mais
{n,m} Chaves De n até m
QUANTIFICADORES
Metacaractere Nome Função
^ Circunflexo Início da linha
$ Cifrão Fim da linha
\b Borda Início ou fim da palavra
ÂNCORAS
Metacaractere Nome Função
\+ Escape Torna o literal o caracter +
| Ou Ou um ou outro
(...) Grupo Delimita um grupo
\1...\9$1...$9 Retrovisor Texto casado nos
grupos 1...9
OUTROS
Metacaractere Nome Função
. PontoUm caracter
qualquer
[...] Lista Lista de caracteres permitidos
[^...] Lista negada Lista de caracteres proibidos
REPRESENTANTES
Expressão Casa com
n.o não, nao, ...
.eclado teclado, Teclado, ...
e.tendido estendido, extendido, eztendido, ...
PONTO
Expressão Casa com
12.45 12:45, 12 45, 12.45, ...
<.> <p>, <i>, <b>, ...
PONTO
Metacaractere Nome Função
. Ponto Um caracter qualquer
[...] ListaLista de
caracteres permitidos
[^...] Lista negada Lista de caracteres proibidos
REPRESENTANTES
Expressão Casa com
n[ãa]o não, nao
[Tt]eclado Teclado, teclado
e[sx]tendido estendido, extendido
12[:. ]45 12:45, 12.45, 12 45
<[pib]> <p>, <i>, <b>
LISTA
Expressão Casa com
n[ãa]o não, nao
[Tt]eclado Teclado, teclado
e[sx]tendido estendido, extendido
12[:. ]45 12:45, 12.45, 12 45
<[pib]> <p>, <i>, <b>
LISTA
Expressão Casa com
<[PIBpib]> <P>, <I>, <B>, <p>, <i>, <b>
LISTA
O que eu preciso Expressão
Um número qualquer [0123456789]
LISTA
O que eu preciso Expressão
Hora no formado hh:mm [0123456789][0123456789]:[0123...
LISTA
DÁ PRA MELHORAR?
INTERVALOS!
O que eu preciso Expressão
Hora no formado hh:mm [0-9][0-9]:[0-9][0-9]
LISTA
DÁ PRA MELHORAR AINDA MAIS?
O que eu preciso Expressão
Hora no formado hh:mm [012][0-9]:[0-5][0-9]
LISTA
Expressão Casa com
A-z Um monte de coisas
A-Za-z Letras maiusculas e minusculas
A-Za-z0-9 Letras maiusculas e minusculas e ainda números
LISTA
Metacaractere Nome Função
. Ponto Um caracter qualquer
[...] Lista Lista de caracteres permitidos
[^...] Lista negadaLista de
caracteres proibidos
REPRESENTANTES
Expressão Casa com
[^0-9] a, b, c, %, #, $, ...
[:;,.!?][^ ] Qualquer coisa que não seja o espaço após a pontuação
LISTA NEGADA
Metacaractere Nome Função
? Opcional Zero ou um
* Asterisco Zero, um ou mais
+ Mais Um ou mais
{n,m} Chaves De n até m
QUANTIFICADORES
MAS ANTES...
COMO SE LÊ UMA EXPRESSÃO REGULAR?
fala[r!]
falar fala!
fala[r!]?
Expressão Casa com
fala[r!]? falar, fala!, fala
</?[pib]> <p>, <i>, <b></p>, </i>, </b>
OPCIONAL
Metacaractere Nome Função
? Opcional Zero ou um
* AsteriscoZero, um ou
mais
+ Mais Um ou mais
{n,m} Chaves De n até m
QUANTIFICADORES
Expressão Casa com
7*0 0, 70, 770, ..., 7777777777777770, ...
bi*p bp, bip, biip, biiiiiiiiip, ...
b[ip]* b, bi, bp, bip, biipp, bpipi, biiiiiip, bpppp, ...
ASTERISCO
Expressão Casa com
</?[bip] *> </b>, </b >, <b >, ..., <p >, ...
ASTERISCO
GULODICE!
?*+{}
Expressão Casa com
[ar]*aa
araarara
ASTERISCO
CORINGA!
.*
Metacaractere Nome Função
? Opcional Zero ou um
* Asterisco Zero, um ou mais
+ Mais Um ou mais
{n,m} Chaves De n até m
QUANTIFICADORES
Expressão Casa com
7+0 70, 770, ..., 7777777777777770, ...
bi+p bip, biip, biiiiiiiiip, ...
b[ip]+ bi, bp, bip, biipp, bpipi, biiiiiip, bpppp, ...
MAIS
Metacaractere Nome Função
? Opcional Zero ou um
* Asterisco Zero, um ou mais
+ Mais Um ou mais
{n,m} Chaves De n até m
QUANTIFICADORES
Metacaractere Repetições
{1,3} De 1 à 3
{3,} Pelo menos 3 (3 ou mais)
{0,3} Até 3
{3} Exatamente 3
{1} Exatamente 1
{0,1} Zero ou 1
{0,} Zero ou mais
{1,} Um ou mais
CHAVES
?*+
Metacaractere Nome Função
^ Circunflexo Início da linha
$ Cifrão Fim da linha
\b Borda Início ou fim da palavra
ÂNCORAS
Expressão Casa com
^abc abcdef...
xyz$ ...uvwxyz
s\b macãs, bananas, uvas
ÂNCORAS
Metacaractere Nome Função
\+ Escape Torna o literal o caracter +
| Ou Ou um ou outro
(...) Grupo Delimita um grupo
\1...\9$1...$9 Retrovisor Texto casado nos
grupos 1...9
OUTROS
Expressão Casa com
lua\* lua*
gato|pato|rato gato, pato, rato
(\d{1,3}.?){4} 200.135.40.30, 8.8.8.8
(.*) texto\1 texto
OUTROS
Expressão Casa com
1\+2\? 1+2?
bom-dia|boa-tarde bom-dia, boa-tarde
(www\.)?bioritmo.com.brwww.bioritmo.com.br
bioritmo.com.br
\d{1,3}.\d{1,3}.\d{1,3}.(\d{1,3}) 192.168.0.5\1 5
OUTROS
s/(abc)(def)/\2\1/g
abcdef
defabc
METACARACTERES “MODERNOSOS”
UM PONTO NEGATIVO...
CONCLUSÃO
APRENDER EXPRESSÕES REGULARESÉ COMO O ALFABETO...
VOCÊ APRENDER PRIMEIRO AS LETRAS INDIVIDUALMENTE.DEPOIS AS SÍLABAS, AS PALAVRAS, FRASES E FINALMENTE OS TEXTOS.
MAS NO FUNDO, SÃO APENAS LETRAS!
REFERÊNCIAS
JABA MODE=ON
REFERÊNCIAS
https://github.com/lucascaton/rugex
OBRIGADO!
DÚVIDAS?