regex
TRANSCRIPT
III Semana Acadêmica FACOMP UFPAIII Semana Acadêmica FACOMP UFPA
Lourdilene SouzaLourdilene [email protected]
RegexRegex
O que são expressões O que são expressões regulares ?regulares ?
“Uma expressão regular traduz um conjunto de padrões, possivelmente complicados e difíceis, pela sua dimensão, de enumerar, numa expressão de dimensão curta e, relativamente fácil de interpretar.”
Aurelio Marinho Jargas
Para que servem as expressões Para que servem as expressões regulares ?regulares ?
✔ data✔ horário✔ número IP✔ nome de pessoa✔ endereço de e-mail✔ endereço de Internet✔ nome de usuário e senha✔ declaração de uma função()✔ dados na coluna N de um texto✔ dados que estão entre <tags></tags>✔ campos específicos de um texto tabulado✔ número de telefone, RG, CPF, cartão de crédito✔ dados que estão apenas no começo ou no fim da linha
ExemploExemplo
05:15 ernesto
08:39 ricardo
10:32 patricia
14:59 gabriel
16:27 carla
22:23 marcelo
Quem acessou o sistema depoisde 12:00 e antes das 18:00 ?
^1[2-8]
ExemplosExemplos● Data (0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}
● Hora ([01][0-9]|2[0-3]):[0-5][0-9]
Email [A-Za-z0-9_.-]+@([A-Za-z0-9_]+\.)+[A-Za-z]{2,4}
Numeros [-+]?[0-9]{1,3}(\.[0-9]{3})?(,[0-9]{2})?
Telefone (\(0xx[0-9]{2}\) ?)?[0-9]{4}-[0-9]{4}
Os metacaracteresOs metacaracteres
meta mnemônico
. ponto
[] lista
[^] lista negada
? opcional
* asterisco
+ mais
{} chaves
^ circunflexo
$ cifrão
\b borda
\ escape
| ou
() grupo
\1 retrovisor
Ponto: o juizPonto: o juiz
Quantas vezes nossa ER casou ?
Com quais caracteres o ponto casou ?
ER = faze.
Meta Mnemônico Função Exemplos Valores possíveis
. ponto Um caractere qualquer
.eclado
Teclado, teclado,zeclado, ...
“Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo.[...]”
Manifesto Ágil
Lista: a exigente [...]Lista: a exigente [...]Sabe o que quer.
Meta Mnemônico Função Exemplos Valores possíveis
[...] lista Lista de caracteres permitidos
[Tt]eclado
Teclado, teclado
Lista negada: a experiente [^...]Lista negada: a experiente [^...]
Meta: [^...]
Mnemônico: Lista negada
Função: Lista de caracteres proibidos
Exemplos: wifi[^1-2]
Valores possíveis: wifi3, wifi333, wifi4,wifi44567, ...
Opcional: o opcional ?Opcional: o opcional ?
Meta Mnemônico Função Exemplos Valores possíveis
? opcional Zero ou um sapato[s!]? sapatos, sapato!, sapato
Asterisco: o tanto-faz *Asterisco: o tanto-faz *
Meta Mnemônico Função Exemplos Valores possíveis
*
asterisco Zero, um ou mais
mu*ito mito, muito, muuito,muuuito, ...
Mais: o tem-que-ter +Mais: o tem-que-ter +
Meta: +
Mnemônico: mais
Função: Um ou mais
Exemplo: mu+ito
Valores possíveis: muito, muuito,muuuito, ...
Chaves: o controle {n,m}Chaves: o controle {n,m}
Meta Mnemônico Função Exemplos Valores possíveis
{n, m} chaves de n até m mu{0, 1}ito mito, muito
Circunflexo: o início ^Circunflexo: o início ^
Meta Mnemônico Função Exemplos Valores possíveis
^ circunflexo início da linha
^lu l&$\o/#)*894578...
Cifrão: o fim $Cifrão: o fim $
Meta Mnemônico Função Exemplos Valores possíveis
$ cifrão fim da linha lu$ 78......@&$\o/#)*99457lu
Escape: a criptonita \Escape: a criptonita \
Meta Mnemônico Função Exemplos Valores possíveis
\. escape Torna literal o caractere .
[0-9]\.[0-9]{3}\. [0-9]{3}-[0-9]
2.222.222-2,9.999.999-9, ...
Ou: o alternativo |Ou: o alternativo |Uma alternativa para cada situação.
Meta: |
Mnemônico: ou
Função: Ou um ou outro
Exemplos: Bom dia|Boa tarde
Valores possíveis: Bom dia, Boa tarde
Grupo: o pop (...)Grupo: o pop (...)
Meta Mnemônico Função Exemplos Valores possíveis
(...) grupo
delimita um grupo
(\.[0-9]){3}
.0.6.2, .2.8.9, .6.6.6,
...
Prática IPrática IDeseja-se realizar a validação da data em determinado formulário no formato dd/mm/aaaa
../../....
[0-9]{2}/[0-9]{2}/[0-9]{4}
[0123][0-9]/[0-9]{2}/[0-9]{4}
[0123][0-9]/[01][0-9]/[0-9]{4}
[0123][0-9]/[01][0-9]/[12][0-9]{3}
([012][0-9]|3[01])/[01][0-9]/[12][0-9]{3}
([012][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}
(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}
Prática IIPrática IIDeseja-se realizar a validação da data em determinado formulário no formato hh:mm
..:..
[0-9]{2}:[0-9]{2}
[012][0-9]:[0-9]{2}
[012][0-9]:[0-5][0-9]
([01][0-9]|2[0-3]):[0-5][0-9]
Testadores OnlineTestadores Online
RegexPal - http://regexpal.com/
Testador de Expressões Regulares - http://alessandrosantos.com.br/lab/er/
Rubular - http://www.rubular.com/
RegExr - http://gskinner.com/RegExr/
Regex - http://regex.larsolavtorvik.com/
Exemplo PHPExemplo PHP
<?php$hora = "15:00";$er = "([01][0-9]|2[0-3]):([0-5][0-9])";if (ereg($er, $hora, $matriz)){echo "Na Semana Acadêmica da Faculdade de Computação, a palestra de REGEX começou às $matriz[1] horas e ";echo "$matriz[2] minutos.\n";}?>
Na Semana Acadêmica da Faculdade de Computação, a palestra de REGEX começou às 15 horas e 00 minutos.