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.”
?
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.”
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 FORMAL
DE 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


       gato
       rato
       pato
METACARACTERES
Metacaractere     Nome
      .            Ponto
     []            Lista
     [^]        Lista negada
      ?          Opcional
      *          Asterisco
     +             Mais
     {}           Chaves
Metacaractere      Nome
        ^         Cicunflexo
        $           Cifrão
        b          Borda
                  Escape
        |            Ou
        ()         Grupo
   1        $1   Retrovisor
REPRESENTANTES
Metacaractere     Nome             Função

                                  Um caracter
       .           Ponto
                                   qualquer

                               Lista de caracteres
     [...]         Lista
                                   permitidos

                               Lista de caracteres
    [^...]      Lista negada
                                    proibidos
QUANTIFICADORES
Metacaractere    Nome          Função

      ?         Opcional      Zero ou um


      *         Asterisco   Zero, um ou mais


     +            Mais        Um ou mais


    {n,m}        Chaves       De n até m
ÂNCORAS
Metacaractere      Nome          Função


      ^          Circunflexo   Início da linha


     $             Cifrão      Fim da linha


                              Início ou fim da
     b            Borda
                                   palavra
OUTROS
Metacaractere     Nome            Função

                               Torna o literal o
     +           Escape
                                 caracter +

       |            Ou        Ou um ou outro


     (...)        Grupo       Delimita um grupo

   1...9                    Texto casado nos
                 Retrovisor
   $1...$9                      grupos 1...9
REPRESENTANTES
Metacaractere     Nome             Função

                                Um caracter
      .           Ponto
                                 qualquer

                               Lista de caracteres
     [...]         Lista
                                   permitidos

                               Lista de caracteres
    [^...]      Lista negada
                                    proibidos
PONTO
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>, ...
REPRESENTANTES
Metacaractere     Nome             Função

                                  Um caracter
      .            Ponto
                                   qualquer

                                  Lista de
    [...]         Lista          caracteres
                                 permitidos
                               Lista de caracteres
    [^...]      Lista negada
                                    proibidos
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

  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
                   [0123456789][0123456789]:[0123...
    hh:mm
DÁ PRA MELHORAR?
INTERVALOS!
LISTA


O que eu preciso           Expressão


Hora no formado
                      [0-9][0-9]:[0-9][0-9]
    hh:mm
DÁ PRA MELHORAR AINDA MAIS?
LISTA


O que eu preciso           Expressão


Hora no formado
                      [012][0-9]:[0-5][0-9]
    hh:mm
LISTA

Expressão               Casa com

   A-z              Um monte de coisas

 A-Za-z        Letras maiusculas e minusculas

               Letras maiusculas e minusculas
A-Za-z0-9
                      e ainda números
REPRESENTANTES
Metacaractere      Nome            Função

                                  Um caracter
       .           Ponto
                                   qualquer

                               Lista de caracteres
     [...]          Lista
                                   permitidos

                                   Lista de
    [^...]      Lista negada     caracteres
                                  proibidos
LISTA NEGADA

Expressão                   Casa com



  [^0-9]                  a, b, c, %, #, $, ...



                Qualquer coisa que não seja o espaço
 [:;,.!?][^ ]
                         após a pontuação
QUANTIFICADORES
Metacaractere    Nome          Função

      ?         Opcional     Zero ou um

      *         Asterisco   Zero, um ou mais


     +            Mais        Um ou mais


    {n,m}        Chaves       De n até m
MAS ANTES...

COMO SE LÊ UMA EXPRESSÃO REGULAR?
fala[r!]
falar      fala!
fala[r!]?
OPCIONAL

Expressão           Casa com



 fala[r!]?         falar, fala!, fala



                   <p>, <i>, <b>
</?[pib]>
                  </p>, </i>, </b>
QUANTIFICADORES
Metacaractere    Nome         Função

      ?          Opcional    Zero ou um

                            Zero, um ou
     *          Asterisco
                               mais

     +             Mais      Um ou mais


    {n,m}        Chaves      De n até m
ASTERISCO

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   >, ...
GULODICE!

    ?
   *
   +
   {}
ASTERISCO


Expressão         Casa com


                      a
  [ar]*a             ara
                    arara
CORINGA!

   .*
QUANTIFICADORES
Metacaractere    Nome          Função

      ?         Opcional      Zero ou um


      *         Asterisco   Zero, um ou mais


     +           Mais        Um ou mais

    {n,m}        Chaves       De n até m
MAIS

Expressão                   Casa com


   7+0        70, 770, ..., 7777777777777770, ...


  bi+p                 bip, biip, biiiiiiiiip, ...


  b[ip]+    bi, bp, bip, biipp, bpipi, biiiiiip, bpppp, ...
QUANTIFICADORES
Metacaractere    Nome          Função

      ?         Opcional      Zero ou um


      *         Asterisco   Zero, um ou mais


     +            Mais        Um ou mais


   {n,m}        Chaves       De n até m
CHAVES
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           +
ÂNCORAS
Metacaractere      Nome          Função


      ^          Circunflexo   Início da linha


     $             Cifrão      Fim da linha


                              Início ou fim da
     b            Borda
                                   palavra
ÂNCORAS

Expressão           Casa com


  ^abc                abcdef...


  xyz$               ...uvwxyz


   sb          macãs, bananas, uvas
OUTROS
Metacaractere     Nome            Função

                               Torna o literal o
     +           Escape
                                 caracter +

       |            Ou        Ou um ou outro


     (...)        Grupo       Delimita um grupo

   1...9                    Texto casado nos
                 Retrovisor
   $1...$9                      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.br
  (www.)?bioritmo.com.br             bioritmo.com.br

                                        192.168.0.5
d{1,3}.d{1,3}.d{1,3}.(d{1,3})
                                        1        5
abcdef

s/(abc)(def)/21/g

      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?

Expressões Regulares (Bio Labs #5)