Expressões Regulares (Bio Labs #5)

Preview:

DESCRIPTION

http://blog.lucascaton.com.br/?p=979

Citation preview

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

REFERÊNCIAS

http://rubular.com/

JABA MODE=ON

REFERÊNCIAS

https://github.com/lucascaton/rugex

OBRIGADO!

DÚVIDAS?