˜
         Expressoes regulares no Linux

                         ´caro Medeiros
                         I

                                                   ˆ               ¸˜
Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao


               Debian Festival 3.0, 16 de agosto de 2008
¸˜
Introducao
        ´      ´
    Historico rapido
           ¸˜
    Motivacoes

       ˜
O que sao ER?
         ´
   Usos basicos

grep

sed (Stream EDitor)

                             ¸˜
Uso em linguagens de programacao
   Java
   Perl

DO IT YOURSELF!
Era uma vez...


      Termo apareceu com dois neurologistas
                              ˆ
      Linguagens formais e automatos
             ˜
       quem nao estudou, deveria
                          ¸˜              ´
      50s - Kleene (descricao formal matematica)
       orientando do Church, regular sets
                                                      ˜
      Linguagem SNOBOL - Pioneira em casamento de padroes
         ˜
        nao exatamente ER
      Editor de textos Unix ed
                    ¸˜
       usando a notacao de Kleene
      grep (Global Regular Expression Print) - nome herdado
      do comando g/re/p do ed.
´
Mais historico



                                ¸˜
      sed (Strem EDitor) - Evolucao do grep
      sed - Facilitando a vida dos coitados dos sysadmins
      desde 1973
              ˜
      Expressoes regulares nas linguagens:
          C (regex) - Uma das primeiras
          Perl - built-in
          Java - API’s e classes
          Javascript
          E por a´ em diante...
                  ı
Vantagens: Pra que ER?


      ´
     Rapido pra processar strings fazendo casamento de
         ˜
     padroes (pattern matching)
     Formalismo bem conhecido
     Produtividade
                                        ´
        sysadmin com conhecimento de ER e melhor!
     Muitos softwares a usam (processadores de texto, IDE’s,
     Google, etc), mas poucos conhecem como aplicar ER.
        passar horas pra resolver problemas simples



                                       ˜
     Veremos mais vantagens a seguir, nao perca.
Desvantagens




               `
     Sintaxe as vezes pouco intuitiva
                          ˜
     Por isso, pra quem nao conhece ER: writability ruim,
                      ´
     legibilidade tambem.
¸˜
Definicoes



       ´                         ¸˜         ˜
     Metodo formal para especificacao de padroes de texto,
     constitu´do de:
             ı
         Strings
                           ¸˜
         S´mbolos com funcoes especiais
          ı
         Grupos desses s´mbolos
                         ı
                 ˜
         Expressoes indicando regras.
                                                   ˜
     Exemplo: todas as palavras no texto com o padrao A duas
     vezes seguidas, sem espacos, ou seja, palavras com a
                              ¸
     string AA.
´
Usos basicos




                               ˆ ˜
     Procurar um texto que voce nao lembra exatamente como
     ´            ´            ¸˜
     e, mas tem ideia das variacoes poss´veis
                                        ı
     Procurar strings em locais espec´ficos da linha ou da
                                     ı
     palavra (sysadmins, acalmai-vos!)
       vi /etc/apt/sources.list
                                     ˜
     Programadores especificando padroes complexos -
     ([Rr]ecuperac˜o|[Ee]xtrac˜o de Informac˜o).
                   ¸a             ¸a                ¸a
¸˜
Apresentacao do grep e toy example




      Programa simples, originalmente feito pro Unix
                                ´                 ˜
      Retorna as linhas que contem um certo padrao de string
      entrado
      Uso comum:
      cat /etc/apt/sources.list | grep restricted
Mais exemplos de grep




  # Exibe as palavras que comecam com cat
  grep -E ’<cat’ cats.txt
Pra fechar o grep




   # Retorna as Pamelas da minha lista de telefone (acentos
        ignorados)
   cat lista.txt | grep -E ’".*[pP]am.*"’
¸˜
Apresentacao - SED




                       ˜
     Editor de textos nao interativo
        ¸˜                                   ´
     Edicao automatizada de documentos, atraves de regras
     Quase uma LP
     Uso pra um sysadmin: Verificar automaticamente senhas
     em branco, apenas com numeros, apenas com letras!
                             ´
˜
Quando nao usar




     Para editar apenas um documento
            ¸˜
     Alteracoes simples que podem ser feitas num editor de
     texto “normal”.
Como funciona




     Filtro: Entrada X - Sa´da Y
                           ı
     Conversor: Entrada X - Sa´da X’
                              ı
     Enderecos ou documento inteiro
           ¸
     Uso intensivo de ER.
Exemplos de brinquedo II - Em sed




      Imprimindo linhas (p de print)
      sed ’p’ cats.txt
                    ˜
        Script que nao faz nada!
      sed ’1,2d’ cats.txt > cats2.txt
        ?
Mais exemplos




       ´          ´
     Ta mas, qual e a sintaxe mais usada em sed? Comando s
     (substitute)
     sed ’s/cat/dog/g’ cats.txt
Os metacaracteres




     Vamos para o PDF!
ER em Java




     java.util.regex
     Classe Matcher
Perl, o mestre das strings e das ER




      Sintaxe de ER built-in
        if (grep /([Cc]omput|[Ii]nformat)/, @$c) {
            $text = $page->text;
            $title = $page->title;
        }
Que problemas podemos resolver?




     Que arquivos de configuracao ¸˜
     podemos modificar com sed
                           ´
     pra realizar tarefas basicas de
                ¸˜
     administracao de sistema?

Expressões regulares no Linux

  • 1.
    ˜ Expressoes regulares no Linux ´caro Medeiros I ˆ ¸˜ Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao Debian Festival 3.0, 16 de agosto de 2008
  • 2.
    ¸˜ Introducao ´ ´ Historico rapido ¸˜ Motivacoes ˜ O que sao ER? ´ Usos basicos grep sed (Stream EDitor) ¸˜ Uso em linguagens de programacao Java Perl DO IT YOURSELF!
  • 3.
    Era uma vez... Termo apareceu com dois neurologistas ˆ Linguagens formais e automatos ˜ quem nao estudou, deveria ¸˜ ´ 50s - Kleene (descricao formal matematica) orientando do Church, regular sets ˜ Linguagem SNOBOL - Pioneira em casamento de padroes ˜ nao exatamente ER Editor de textos Unix ed ¸˜ usando a notacao de Kleene grep (Global Regular Expression Print) - nome herdado do comando g/re/p do ed.
  • 4.
    ´ Mais historico ¸˜ sed (Strem EDitor) - Evolucao do grep sed - Facilitando a vida dos coitados dos sysadmins desde 1973 ˜ Expressoes regulares nas linguagens: C (regex) - Uma das primeiras Perl - built-in Java - API’s e classes Javascript E por a´ em diante... ı
  • 5.
    Vantagens: Pra queER? ´ Rapido pra processar strings fazendo casamento de ˜ padroes (pattern matching) Formalismo bem conhecido Produtividade ´ sysadmin com conhecimento de ER e melhor! Muitos softwares a usam (processadores de texto, IDE’s, Google, etc), mas poucos conhecem como aplicar ER. passar horas pra resolver problemas simples ˜ Veremos mais vantagens a seguir, nao perca.
  • 6.
    Desvantagens ` Sintaxe as vezes pouco intuitiva ˜ Por isso, pra quem nao conhece ER: writability ruim, ´ legibilidade tambem.
  • 7.
    ¸˜ Definicoes ´ ¸˜ ˜ Metodo formal para especificacao de padroes de texto, constitu´do de: ı Strings ¸˜ S´mbolos com funcoes especiais ı Grupos desses s´mbolos ı ˜ Expressoes indicando regras. ˜ Exemplo: todas as palavras no texto com o padrao A duas vezes seguidas, sem espacos, ou seja, palavras com a ¸ string AA.
  • 8.
    ´ Usos basicos ˆ ˜ Procurar um texto que voce nao lembra exatamente como ´ ´ ¸˜ e, mas tem ideia das variacoes poss´veis ı Procurar strings em locais espec´ficos da linha ou da ı palavra (sysadmins, acalmai-vos!) vi /etc/apt/sources.list ˜ Programadores especificando padroes complexos - ([Rr]ecuperac˜o|[Ee]xtrac˜o de Informac˜o). ¸a ¸a ¸a
  • 9.
    ¸˜ Apresentacao do grepe toy example Programa simples, originalmente feito pro Unix ´ ˜ Retorna as linhas que contem um certo padrao de string entrado Uso comum: cat /etc/apt/sources.list | grep restricted
  • 10.
    Mais exemplos degrep # Exibe as palavras que comecam com cat grep -E ’<cat’ cats.txt
  • 11.
    Pra fechar ogrep # Retorna as Pamelas da minha lista de telefone (acentos ignorados) cat lista.txt | grep -E ’".*[pP]am.*"’
  • 12.
    ¸˜ Apresentacao - SED ˜ Editor de textos nao interativo ¸˜ ´ Edicao automatizada de documentos, atraves de regras Quase uma LP Uso pra um sysadmin: Verificar automaticamente senhas em branco, apenas com numeros, apenas com letras! ´
  • 13.
    ˜ Quando nao usar Para editar apenas um documento ¸˜ Alteracoes simples que podem ser feitas num editor de texto “normal”.
  • 14.
    Como funciona Filtro: Entrada X - Sa´da Y ı Conversor: Entrada X - Sa´da X’ ı Enderecos ou documento inteiro ¸ Uso intensivo de ER.
  • 15.
    Exemplos de brinquedoII - Em sed Imprimindo linhas (p de print) sed ’p’ cats.txt ˜ Script que nao faz nada! sed ’1,2d’ cats.txt > cats2.txt ?
  • 16.
    Mais exemplos ´ ´ Ta mas, qual e a sintaxe mais usada em sed? Comando s (substitute) sed ’s/cat/dog/g’ cats.txt
  • 17.
    Os metacaracteres Vamos para o PDF!
  • 18.
    ER em Java java.util.regex Classe Matcher
  • 19.
    Perl, o mestredas strings e das ER Sintaxe de ER built-in if (grep /([Cc]omput|[Ii]nformat)/, @$c) { $text = $page->text; $title = $page->title; }
  • 20.
    Que problemas podemosresolver? Que arquivos de configuracao ¸˜ podemos modificar com sed ´ pra realizar tarefas basicas de ¸˜ administracao de sistema?