SlideShare uma empresa Scribd logo
1 de 93
Baixar para ler offline
Casamento com Expressões Regulares
Alisson G. Chiquitto
Developers Paraná
chiquitto@gmail.com
14 de setembro de 2016
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 1 / 57
Introdução e Contextualização
Introdução e Contextualização
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 2 / 57
Termo: Regular
Regular?
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 3 / 57
Termo: Regular
Regular?
”Que está de acordo com as regras, as normas, o costume;
normal.” (Michaelis Online)
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 3 / 57
Padrões de strings
Datas: dd/MM/YYYY;
Hora: hh:mm:ss;
CPF: 000.000.000-00;
CNPJ: 000.000.000/0000-00;
Números de telefone: (00) 00000-0000;
Senhas: Mínimo de 6 caracteres;
Email: nome@dominio.com.br;
MD5: 32 caracteres hexadecimais;
Caminhos de arquivo: /home/user/apresentacao.pdf;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 4 / 57
Padrões de strings
Binário: Sequência de 0 e 1;
XML/HTML: <tag>conteudo</tag>;
IP: 000.000.000.000;
MAC: 00:00:00:00:00:00;
CEP: 00.000-000;
Tipo Sanguíneo: O+, O-, A+, A-, B+, B-, AB+, AB-;
Cores hexadecimais: 3 pares de hexadecimais (#FFFFFF);
Placa de veículos: 3 letras + 4 dígitos;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 5 / 57
Padrões de strings
Endereço de entrega
Exemplo:
Rua Torre de Belém, 1000, Ap 101, Vila Roque, São Paulo/SP, 02472-035
Avenida Brasil, 3000, Centro, Cianorte/PR, 87200-000
Praça José Borges do Vale, s/n, Icozeira, Abaré/BA, Icozeira
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 6 / 57
Padrões de strings
Endereço de entrega
Exemplo:
Rua Torre de Belém, 1000, Ap 101, Vila Roque, São Paulo/SP, 02472-035
Avenida Brasil, 3000, Centro, Cianorte/PR, 87200-000
Praça José Borges do Vale, s/n, Icozeira, Abaré/BA, Icozeira
Padrão:
[tipo de logradouro] [logradouro], [número], [complemento], [bairro],
[cidade]/[uf], [cep]
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 6 / 57
Padrões de strings
Números no JSON
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 7 / 57
Expressões Regulares
Objetivos
Testar substrings;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 8 / 57
Expressões Regulares
Objetivos
Testar substrings;
Procurar substrings;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 8 / 57
Expressões Regulares
Objetivos
Testar substrings;
Procurar substrings;
Substituir substrings;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 8 / 57
Expressões Regulares
Definições
”Uma string especialmente codificada que, quando usada (...) pode
corresponder a outras strings.” - Fitzgerald, Michael
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 9 / 57
Expressões Regulares
Definições
”Uma string especialmente codificada que, quando usada (...) pode
corresponder a outras strings.” - Fitzgerald, Michael
”Uma expressão regular é um método formal de se especificar um
padrão de texto.” - Jargas, Aurélio Marinho
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 9 / 57
Expressões Regulares
Exemplos reais
Email:
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
Expressões Regulares
Exemplos reais
Email:
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}
Número IP:
bd{1,3}.d{1,3}.d{1,3}.d{1,3}b
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
Expressões Regulares
Exemplos reais
Email:
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}
Número IP:
bd{1,3}.d{1,3}.d{1,3}.d{1,3}b
Cartão de crédito:
^4[0-9]{12}(?:[0-9]{3})?$
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
Expressões Regulares
Exemplos reais
Email:
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}
Número IP:
bd{1,3}.d{1,3}.d{1,3}.d{1,3}b
Cartão de crédito:
^4[0-9]{12}(?:[0-9]{3})?$
Trim:
^[s]*(.*?)[s]*$
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
Representação de caracteres
Representação de caracteres
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 11 / 57
Caracteres no regex
Cada caractere em uma expressão regular pode ser de dois tipos:
Metacaractere
Tem um significado específico dentro da regex;
Literal
Significa ele próprio;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 12 / 57
Caractere literal
A expressão:
ab
Casa com:
f ab
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 13 / 57
Caractere literal
A expressão:
ab
Casa com:
b ab a
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 13 / 57
Qualquer caractere: Ponto
O caractere ponto vai casar com (apenas) 1 caractere qualquer.
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 14 / 57
Qualquer caractere: Ponto
A expressão:
a.a
Casa com:
aba aBa a5a a-a f ada b ana na
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 14 / 57
Lista de caracteres
”Mais restrito do que o Ponto (.), a lista é um conjunto de caracteres
restrito.”
Exemplos:
[aeiou] lista de vogais;
[01] números do conjunto binário;
[a-z] letras do alfabeto;
[0123456789] números do conjunto decimal;
[0-9] números do conjunto decimal;
[0123456789abcdef] números do conjunto hexadecimal;
[0-9a-f] números do conjunto hexadecimal;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 15 / 57
Lista de caracteres
A expressão:
d[aeiou]d[aeiou]
Casa com:
dado dedo dida
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 16 / 57
Lista de caracteres com intervalos
A expressão:
b[a-z]c
Casa com:
bbc bec o boc a
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 17 / 57
Lista de caracteres com intervalos
A expressão:
[0-9a-f][0-9a-f]
Casa com:
00 7f ff
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 18 / 57
Exemplo
Validação de endereço MAC
A expressão:
[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:
[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]
Casa com:
Meu endereço MAC é 00:00:00:00:00:00
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 19 / 57
Exemplo
Validação de número telefonico
A expressão:
([0-9][0-9])[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
Casa com:
Fone: (44)91234-5678
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 20 / 57
Exemplo
Validação de número de CEP
A expressão:
[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]
Casa com:
CEP de Cianorte: 87200-163
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 21 / 57
Quantificadores
Quantificadores
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 22 / 57
Tanto faz: 0 ou mais
A expressão:
a∗
Casa com:
a
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 23 / 57
Tanto faz: 0 ou mais
A expressão:
a∗
Casa com:
aa
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 23 / 57
Tanto faz: 0 ou mais
A expressão:
a∗
Casa com:
aaa
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 23 / 57
Tanto faz: 0 ou mais
A expressão:
a[a-z]∗c
Casa com:
ac ordo
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 24 / 57
Tanto faz: 0 ou mais
A expressão:
a[a-z]∗c
Casa com:
agropec uaria
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 24 / 57
Tanto faz: 0 ou mais
A expressão:
a[a-z]∗c
Casa com:
fin anc eiro
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 24 / 57
Opcional: 0 ou 1
A expressão:
ae?a
Casa com:
aa
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 25 / 57
Opcional: 0 ou 1
A expressão:
ae?a
Casa com:
aea
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 25 / 57
Opcional: 0 ou 1
A expressão:
a[a-z]?c
Casa com:
ac umula
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
Opcional: 0 ou 1
A expressão:
a[a-z]?c
Casa com:
b anc o
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
Opcional: 0 ou 1
A expressão:
a[a-z]?c
Casa com:
intern ac ional
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
Opcional: 0 ou 1
A expressão:
a[a-z]?c
Casa com:
fin anc eiro
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
Tem que ter: 1 ou mais
A expressão:
ab+c
Casa com:
abc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 27 / 57
Tem que ter: 1 ou mais
A expressão:
ab+c
Casa com:
abbc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 27 / 57
Tem que ter: 1 ou mais
A expressão:
ab+c
Casa com:
abbbc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 27 / 57
Tem que ter: 1 ou mais
A expressão:
a[a-z]+d
Casa com:
acord o
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
Tem que ter: 1 ou mais
A expressão:
a[a-z]+d
Casa com:
apresentand o
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
Tem que ter: 1 ou mais
A expressão:
a[a-z]+d
Casa com:
p assad o
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
Tem que ter: 1 ou mais
A expressão:
a[a-z]+d
Casa com:
atividad e
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
Tem que ter: 1 ou mais
Regex para nome
A expressão:
[A-Z][a-z]+
Casa com:
Chiquitto
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 29 / 57
Controle
Especifica exatamente quantas repetições consecutivas se espera de um
conjunto.
{m,n} m a n;
{m,} pelo menos m;
{0,n} até n;
{m} exatamente m;
{0,1} opcional (?);
{0,} tanto faz (∗);
{1,} tem que ter (+);
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 30 / 57
Controle
A expressão:
ab{2}c
Casa com:
abbc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 31 / 57
Controle
A expressão:
ab{1,3}c
Casa com:
abc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 32 / 57
Controle
A expressão:
ab{1,3}c
Casa com:
abbc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 32 / 57
Controle
A expressão:
ab{1,3}c
Casa com:
abbbc
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 32 / 57
Controle
A expressão:
a[a-z]{1,3}i
Casa com:
br asi l
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 33 / 57
Controle
A expressão:
a[a-z]{1,3}i
Casa com:
abri l
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 33 / 57
Controle
A expressão:
a[a-z]{1,3}i
Casa com:
ativi dade
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 33 / 57
Exemplo
Validação de endereço MAC
A expressão:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}
Casa com:
Meu endereço MAC é 00:00:00:00:00:00
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 34 / 57
Exemplo
Validação de número telefonico
A expressão:
([0-9]{2})[0-9]{4,5}-[0-9]{4}
Casa com:
Fone: (44)91234-5678
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 35 / 57
Exemplo
Validação de número de CEP
A expressão:
[0-9]{5}-[0-9]{3}
Casa com:
CEP de Cianorte: 87200-163
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 36 / 57
Grupos
Grupos
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 37 / 57
Grupos
”Junta elementos de uma expressão regular”
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 38 / 57
Grupos
A expressão:
a[0-9]+
Casa com:
a1
A expressão:
(a[0-9])+
Casa com:
a1
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 39 / 57
Grupos
A expressão:
a[0-9]+
Casa com:
a12
A expressão:
(a[0-9])+
Casa com:
a1a2
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 39 / 57
Grupos
A expressão:
a[0-9]+
Casa com:
a123
A expressão:
(a[0-9])+
Casa com:
a1a2a3
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 39 / 57
Casamento de endereços físicos (MAC)
A expressão:
[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:
[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]
Casa com:
00:e0:4c:02:fa:2b
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 40 / 57
Casamento de endereços físicos (MAC)
A expressão:
[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:
[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]
Casa com:
00:e0:4c:02:fa:2b
A expressão:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}
Casa com:
00:e0:4c:02:fa:2b
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 40 / 57
Casamento de endereços físicos (MAC)
A expressão:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}
Casa com:
00:e0:4c:02:fa:2b
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 41 / 57
Casamento de endereços físicos (MAC)
A expressão:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:
[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}
Casa com:
00:e0:4c:02:fa:2b
A expressão:
([0-9a-f]{2}:){5}[0-9a-f]{2}
Casa com:
00:e0:4c:02:fa:2b
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 41 / 57
Grupo de alternativas: OU
A expressão:
(super|hiper)mercado
Casa com:
supermercado hipermercado mercado
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 42 / 57
Grupo de alternativas: OU
A expressão:
(super|hiper)mercado
Casa com:
supermercado hipermercado mercado
A expressão:
(super|hiper)?mercado
Casa com:
supermercado hipermercado mercado
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 42 / 57
Retrovisor: Referência para trás
O retrovisor faz referência a uma string casada por um grupo.
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 43 / 57
Retrovisor: Referência para trás
A expressão:
([a-z]+)-1
Casa com:
quero-quero
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
Retrovisor: Referência para trás
A expressão:
([a-z]+)-1
Casa com:
tico-tico
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
Retrovisor: Referência para trás
A expressão:
([a-z]+)-1
Casa com:
reco-reco
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
Retrovisor: Referência para trás
A expressão:
([a-z]+)-1
Casa com:
pula-pula
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
Retrovisor: Referência para trás
A expressão:
((band)eira)nte 1 2a
Casa com:
bandeirante bandeira banda
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 45 / 57
Exemplo
Casamento com HTML
A expressão:
<([a-z]+)>.*</1>
Casa com:
Oi, meu nome é <strong>Goku</strong>
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 46 / 57
Replace
Replace
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 47 / 57
Remover dígitos
Sem regex:
"111.222.333-44"
.replace(/0/g, "@")
.replace(/1/g, "@")
.replace(/2/g, "@")
.replace(/3/g, "@")
.replace(/4/g, "@")
.replace(/5/g, "@")
.replace(/6/g, "@")
.replace(/7/g, "@")
.replace(/8/g, "@")
.replace(/9/g, "@")
;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 48 / 57
Remover dígitos
Sem regex:
"111.222.333-44"
.replace(/0/g, "@")
.replace(/1/g, "@")
.replace(/2/g, "@")
.replace(/3/g, "@")
.replace(/4/g, "@")
.replace(/5/g, "@")
.replace(/6/g, "@")
.replace(/7/g, "@")
.replace(/8/g, "@")
.replace(/9/g, "@")
;
Com regex:
"111.222.333-44"
.replace(/[0-9]/g, "@")
;
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 48 / 57
Formatar número CPF
"00000000000".replace(
/([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{2})/g,
"$1.$2.$3-$4"
);
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 49 / 57
Gerar SQL de um CSV
var csv = "São Paulo;SPn";
csv += "Rio de Janeiro;RJ";
csv.replace(
/(.*);([A-Z]{2})/g,
"Insert Into cidade (uf,cidade) Values (’$2’, ’$1’);"
)
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 50 / 57
Referências
Referências
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 51 / 57
Livros
Expressões Regulares: Guia de Consulta Rápida - Jargas, Aurélio Marinho
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 52 / 57
Livros
Expressões Regulares: Uma Abordagem Divertida - Jargas, Aurélio Marinho
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 53 / 57
Livros
Introdução às Expressões Regulares - Fitzgerald, Michael
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 54 / 57
Referências I
Expressões Regulares - Guia de Consulta Rápida
http://aurelio.net/regex/guia/
Regular-Expressions.info
http://www.regular-expressions.info/
Expressões Regulares / Regular Expressions Tool
http://www.regexp.com.br/
Regular Expression 101 Tool
https://regex101.com/
Regex Crossword
https://regexcrossword.com/
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 55 / 57
Contato
github.com/chiquitto linkedin.com/in/chiquitto
chiquitto@gmail.com
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 56 / 57
The End
Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 57 / 57

Mais conteúdo relacionado

Último

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Destaque

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Casamento com Expressões Regulares

  • 1. Casamento com Expressões Regulares Alisson G. Chiquitto Developers Paraná chiquitto@gmail.com 14 de setembro de 2016 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 1 / 57
  • 2. Introdução e Contextualização Introdução e Contextualização Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 2 / 57
  • 3. Termo: Regular Regular? Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 3 / 57
  • 4. Termo: Regular Regular? ”Que está de acordo com as regras, as normas, o costume; normal.” (Michaelis Online) Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 3 / 57
  • 5. Padrões de strings Datas: dd/MM/YYYY; Hora: hh:mm:ss; CPF: 000.000.000-00; CNPJ: 000.000.000/0000-00; Números de telefone: (00) 00000-0000; Senhas: Mínimo de 6 caracteres; Email: nome@dominio.com.br; MD5: 32 caracteres hexadecimais; Caminhos de arquivo: /home/user/apresentacao.pdf; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 4 / 57
  • 6. Padrões de strings Binário: Sequência de 0 e 1; XML/HTML: <tag>conteudo</tag>; IP: 000.000.000.000; MAC: 00:00:00:00:00:00; CEP: 00.000-000; Tipo Sanguíneo: O+, O-, A+, A-, B+, B-, AB+, AB-; Cores hexadecimais: 3 pares de hexadecimais (#FFFFFF); Placa de veículos: 3 letras + 4 dígitos; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 5 / 57
  • 7. Padrões de strings Endereço de entrega Exemplo: Rua Torre de Belém, 1000, Ap 101, Vila Roque, São Paulo/SP, 02472-035 Avenida Brasil, 3000, Centro, Cianorte/PR, 87200-000 Praça José Borges do Vale, s/n, Icozeira, Abaré/BA, Icozeira Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 6 / 57
  • 8. Padrões de strings Endereço de entrega Exemplo: Rua Torre de Belém, 1000, Ap 101, Vila Roque, São Paulo/SP, 02472-035 Avenida Brasil, 3000, Centro, Cianorte/PR, 87200-000 Praça José Borges do Vale, s/n, Icozeira, Abaré/BA, Icozeira Padrão: [tipo de logradouro] [logradouro], [número], [complemento], [bairro], [cidade]/[uf], [cep] Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 6 / 57
  • 9. Padrões de strings Números no JSON Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 7 / 57
  • 10. Expressões Regulares Objetivos Testar substrings; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 8 / 57
  • 11. Expressões Regulares Objetivos Testar substrings; Procurar substrings; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 8 / 57
  • 12. Expressões Regulares Objetivos Testar substrings; Procurar substrings; Substituir substrings; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 8 / 57
  • 13. Expressões Regulares Definições ”Uma string especialmente codificada que, quando usada (...) pode corresponder a outras strings.” - Fitzgerald, Michael Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 9 / 57
  • 14. Expressões Regulares Definições ”Uma string especialmente codificada que, quando usada (...) pode corresponder a outras strings.” - Fitzgerald, Michael ”Uma expressão regular é um método formal de se especificar um padrão de texto.” - Jargas, Aurélio Marinho Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 9 / 57
  • 15. Expressões Regulares Exemplos reais Email: [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6} Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
  • 16. Expressões Regulares Exemplos reais Email: [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6} Número IP: bd{1,3}.d{1,3}.d{1,3}.d{1,3}b Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
  • 17. Expressões Regulares Exemplos reais Email: [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6} Número IP: bd{1,3}.d{1,3}.d{1,3}.d{1,3}b Cartão de crédito: ^4[0-9]{12}(?:[0-9]{3})?$ Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
  • 18. Expressões Regulares Exemplos reais Email: [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6} Número IP: bd{1,3}.d{1,3}.d{1,3}.d{1,3}b Cartão de crédito: ^4[0-9]{12}(?:[0-9]{3})?$ Trim: ^[s]*(.*?)[s]*$ Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 10 / 57
  • 19. Representação de caracteres Representação de caracteres Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 11 / 57
  • 20. Caracteres no regex Cada caractere em uma expressão regular pode ser de dois tipos: Metacaractere Tem um significado específico dentro da regex; Literal Significa ele próprio; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 12 / 57
  • 21. Caractere literal A expressão: ab Casa com: f ab Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 13 / 57
  • 22. Caractere literal A expressão: ab Casa com: b ab a Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 13 / 57
  • 23. Qualquer caractere: Ponto O caractere ponto vai casar com (apenas) 1 caractere qualquer. Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 14 / 57
  • 24. Qualquer caractere: Ponto A expressão: a.a Casa com: aba aBa a5a a-a f ada b ana na Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 14 / 57
  • 25. Lista de caracteres ”Mais restrito do que o Ponto (.), a lista é um conjunto de caracteres restrito.” Exemplos: [aeiou] lista de vogais; [01] números do conjunto binário; [a-z] letras do alfabeto; [0123456789] números do conjunto decimal; [0-9] números do conjunto decimal; [0123456789abcdef] números do conjunto hexadecimal; [0-9a-f] números do conjunto hexadecimal; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 15 / 57
  • 26. Lista de caracteres A expressão: d[aeiou]d[aeiou] Casa com: dado dedo dida Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 16 / 57
  • 27. Lista de caracteres com intervalos A expressão: b[a-z]c Casa com: bbc bec o boc a Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 17 / 57
  • 28. Lista de caracteres com intervalos A expressão: [0-9a-f][0-9a-f] Casa com: 00 7f ff Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 18 / 57
  • 29. Exemplo Validação de endereço MAC A expressão: [0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]: [0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f] Casa com: Meu endereço MAC é 00:00:00:00:00:00 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 19 / 57
  • 30. Exemplo Validação de número telefonico A expressão: ([0-9][0-9])[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] Casa com: Fone: (44)91234-5678 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 20 / 57
  • 31. Exemplo Validação de número de CEP A expressão: [0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9] Casa com: CEP de Cianorte: 87200-163 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 21 / 57
  • 32. Quantificadores Quantificadores Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 22 / 57
  • 33. Tanto faz: 0 ou mais A expressão: a∗ Casa com: a Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 23 / 57
  • 34. Tanto faz: 0 ou mais A expressão: a∗ Casa com: aa Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 23 / 57
  • 35. Tanto faz: 0 ou mais A expressão: a∗ Casa com: aaa Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 23 / 57
  • 36. Tanto faz: 0 ou mais A expressão: a[a-z]∗c Casa com: ac ordo Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 24 / 57
  • 37. Tanto faz: 0 ou mais A expressão: a[a-z]∗c Casa com: agropec uaria Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 24 / 57
  • 38. Tanto faz: 0 ou mais A expressão: a[a-z]∗c Casa com: fin anc eiro Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 24 / 57
  • 39. Opcional: 0 ou 1 A expressão: ae?a Casa com: aa Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 25 / 57
  • 40. Opcional: 0 ou 1 A expressão: ae?a Casa com: aea Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 25 / 57
  • 41. Opcional: 0 ou 1 A expressão: a[a-z]?c Casa com: ac umula Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
  • 42. Opcional: 0 ou 1 A expressão: a[a-z]?c Casa com: b anc o Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
  • 43. Opcional: 0 ou 1 A expressão: a[a-z]?c Casa com: intern ac ional Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
  • 44. Opcional: 0 ou 1 A expressão: a[a-z]?c Casa com: fin anc eiro Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 26 / 57
  • 45. Tem que ter: 1 ou mais A expressão: ab+c Casa com: abc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 27 / 57
  • 46. Tem que ter: 1 ou mais A expressão: ab+c Casa com: abbc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 27 / 57
  • 47. Tem que ter: 1 ou mais A expressão: ab+c Casa com: abbbc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 27 / 57
  • 48. Tem que ter: 1 ou mais A expressão: a[a-z]+d Casa com: acord o Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
  • 49. Tem que ter: 1 ou mais A expressão: a[a-z]+d Casa com: apresentand o Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
  • 50. Tem que ter: 1 ou mais A expressão: a[a-z]+d Casa com: p assad o Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
  • 51. Tem que ter: 1 ou mais A expressão: a[a-z]+d Casa com: atividad e Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 28 / 57
  • 52. Tem que ter: 1 ou mais Regex para nome A expressão: [A-Z][a-z]+ Casa com: Chiquitto Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 29 / 57
  • 53. Controle Especifica exatamente quantas repetições consecutivas se espera de um conjunto. {m,n} m a n; {m,} pelo menos m; {0,n} até n; {m} exatamente m; {0,1} opcional (?); {0,} tanto faz (∗); {1,} tem que ter (+); Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 30 / 57
  • 54. Controle A expressão: ab{2}c Casa com: abbc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 31 / 57
  • 55. Controle A expressão: ab{1,3}c Casa com: abc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 32 / 57
  • 56. Controle A expressão: ab{1,3}c Casa com: abbc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 32 / 57
  • 57. Controle A expressão: ab{1,3}c Casa com: abbbc Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 32 / 57
  • 58. Controle A expressão: a[a-z]{1,3}i Casa com: br asi l Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 33 / 57
  • 59. Controle A expressão: a[a-z]{1,3}i Casa com: abri l Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 33 / 57
  • 60. Controle A expressão: a[a-z]{1,3}i Casa com: ativi dade Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 33 / 57
  • 61. Exemplo Validação de endereço MAC A expressão: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2} Casa com: Meu endereço MAC é 00:00:00:00:00:00 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 34 / 57
  • 62. Exemplo Validação de número telefonico A expressão: ([0-9]{2})[0-9]{4,5}-[0-9]{4} Casa com: Fone: (44)91234-5678 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 35 / 57
  • 63. Exemplo Validação de número de CEP A expressão: [0-9]{5}-[0-9]{3} Casa com: CEP de Cianorte: 87200-163 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 36 / 57
  • 64. Grupos Grupos Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 37 / 57
  • 65. Grupos ”Junta elementos de uma expressão regular” Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 38 / 57
  • 66. Grupos A expressão: a[0-9]+ Casa com: a1 A expressão: (a[0-9])+ Casa com: a1 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 39 / 57
  • 67. Grupos A expressão: a[0-9]+ Casa com: a12 A expressão: (a[0-9])+ Casa com: a1a2 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 39 / 57
  • 68. Grupos A expressão: a[0-9]+ Casa com: a123 A expressão: (a[0-9])+ Casa com: a1a2a3 Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 39 / 57
  • 69. Casamento de endereços físicos (MAC) A expressão: [0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]: [0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f] Casa com: 00:e0:4c:02:fa:2b Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 40 / 57
  • 70. Casamento de endereços físicos (MAC) A expressão: [0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]: [0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f] Casa com: 00:e0:4c:02:fa:2b A expressão: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2} Casa com: 00:e0:4c:02:fa:2b Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 40 / 57
  • 71. Casamento de endereços físicos (MAC) A expressão: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2} Casa com: 00:e0:4c:02:fa:2b Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 41 / 57
  • 72. Casamento de endereços físicos (MAC) A expressão: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}: [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2} Casa com: 00:e0:4c:02:fa:2b A expressão: ([0-9a-f]{2}:){5}[0-9a-f]{2} Casa com: 00:e0:4c:02:fa:2b Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 41 / 57
  • 73. Grupo de alternativas: OU A expressão: (super|hiper)mercado Casa com: supermercado hipermercado mercado Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 42 / 57
  • 74. Grupo de alternativas: OU A expressão: (super|hiper)mercado Casa com: supermercado hipermercado mercado A expressão: (super|hiper)?mercado Casa com: supermercado hipermercado mercado Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 42 / 57
  • 75. Retrovisor: Referência para trás O retrovisor faz referência a uma string casada por um grupo. Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 43 / 57
  • 76. Retrovisor: Referência para trás A expressão: ([a-z]+)-1 Casa com: quero-quero Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
  • 77. Retrovisor: Referência para trás A expressão: ([a-z]+)-1 Casa com: tico-tico Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
  • 78. Retrovisor: Referência para trás A expressão: ([a-z]+)-1 Casa com: reco-reco Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
  • 79. Retrovisor: Referência para trás A expressão: ([a-z]+)-1 Casa com: pula-pula Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 44 / 57
  • 80. Retrovisor: Referência para trás A expressão: ((band)eira)nte 1 2a Casa com: bandeirante bandeira banda Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 45 / 57
  • 81. Exemplo Casamento com HTML A expressão: <([a-z]+)>.*</1> Casa com: Oi, meu nome é <strong>Goku</strong> Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 46 / 57
  • 82. Replace Replace Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 47 / 57
  • 83. Remover dígitos Sem regex: "111.222.333-44" .replace(/0/g, "@") .replace(/1/g, "@") .replace(/2/g, "@") .replace(/3/g, "@") .replace(/4/g, "@") .replace(/5/g, "@") .replace(/6/g, "@") .replace(/7/g, "@") .replace(/8/g, "@") .replace(/9/g, "@") ; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 48 / 57
  • 84. Remover dígitos Sem regex: "111.222.333-44" .replace(/0/g, "@") .replace(/1/g, "@") .replace(/2/g, "@") .replace(/3/g, "@") .replace(/4/g, "@") .replace(/5/g, "@") .replace(/6/g, "@") .replace(/7/g, "@") .replace(/8/g, "@") .replace(/9/g, "@") ; Com regex: "111.222.333-44" .replace(/[0-9]/g, "@") ; Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 48 / 57
  • 86. Gerar SQL de um CSV var csv = "São Paulo;SPn"; csv += "Rio de Janeiro;RJ"; csv.replace( /(.*);([A-Z]{2})/g, "Insert Into cidade (uf,cidade) Values (’$2’, ’$1’);" ) Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 50 / 57
  • 87. Referências Referências Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 51 / 57
  • 88. Livros Expressões Regulares: Guia de Consulta Rápida - Jargas, Aurélio Marinho Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 52 / 57
  • 89. Livros Expressões Regulares: Uma Abordagem Divertida - Jargas, Aurélio Marinho Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 53 / 57
  • 90. Livros Introdução às Expressões Regulares - Fitzgerald, Michael Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 54 / 57
  • 91. Referências I Expressões Regulares - Guia de Consulta Rápida http://aurelio.net/regex/guia/ Regular-Expressions.info http://www.regular-expressions.info/ Expressões Regulares / Regular Expressions Tool http://www.regexp.com.br/ Regular Expression 101 Tool https://regex101.com/ Regex Crossword https://regexcrossword.com/ Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 55 / 57
  • 92. Contato github.com/chiquitto linkedin.com/in/chiquitto chiquitto@gmail.com Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 56 / 57
  • 93. The End Alisson G. Chiquitto (devparana.org) Regex 14 de setembro de 2016 57 / 57