Resultados 1 a 2 de 2

Tópico: Expressões Regulares - conceitos e exemplos de utilização

  1. #1
    Administrador Avatar de damao.tecnico
    Data de Ingresso
    Dec 2011
    Localização
    BRASIL
    Posts
    1,324
    Thanks (Given)
    36
    Thanks (Received)
    114
    Likes (Given)
    41
    Likes (Received)
    109

    Expressões Regulares - conceitos e exemplos de utilização

    Considerações:

    - Esse artigo destina-se aos Administradores de Sistema / Redes que se interessem em aprender um pouco mais sobre esse recurso;
    - Utilizei o FreeBSD 9 para a elaboração do Tópico, mas os conceitos podem ser utilizados sem problema algum no Linux.

    As Expressões Regulares

    No primeiro encontro elas podem até intimidar, mas as Expressões Regulares são ferramentas indispensáveis a qualquer administrador de sistemas, podendo poupar minutos e até horas de pesquisa e trabalho manual.
    Uma Expressão Regular (ER) é um método formal de se especificar um padrão de texto. Este padrão pode ter um tamanho variável, ser abrangente ou até prever falhas de digitação. As expressões são formadas por caracteres como *, + e ^. Cada um possui uma função especial, funcionando como uma ferramenta para auxiliar na busca de textos.
    Usando apenas palavras e texto normal, é impossível fazer pesquisas genéricas como: “um número de três dígitos”, ou “linhas que comecem com uma vogal”. Usando expressões Regulares, isso é facilmente conseguido com [0-9]{3} e ^[AaEeIiOoUu], respectivamente.

    Vários aplicativos do sistema entendem as expressões, entre eles:
    · Leitores de e-mail
    · Navegadores
    · Editores de texto
    · Suítes Office
    · Linguagens de programação (a grande maioria)
    · Filtros do servidor de e-mail e proxy (procmail, maildrop, postfix, squid)
    · Ferramentas da linha de comando (grep, find, sed, awk)

    Por ser um conceito largamente utilizado em uma diversidade de aplicativos, o tempo investido em seu aprendizado é recompensado rapidamente. O editor VI tem suporte total a Expressões Regulares, e seu domínio agiliza em muito o uso do editor. Na programação, as expressões facilitam a validação e busca de dados. Na linha de comando, várias ferramentas conhecidas dos administradores as utilizam.
    Para o administrador, as expressões são especialmente úteis para pesquisar e extrair informações de arquivos de log do sistema e para configurar sistemas com possibilidades de filtragem e barramento como o filtro Procmail e o proxy Squid.

    Os Metacaracteres


    Estes são os caracteres especiais utilizados em ERs, chamados metacaracteres. Eles podem ser combinados entre si e com outros caracteres normais para formar uma expressão completa.
    Meta Nome Posicionamento
    ^ circunflexo Representa o começo da linha
    $ Cifrão Representa o fim da linha
    Meta Nome Texto
    [abc] lista Casa as letras “a” ou “b” ou “c”
    [a-d] lista Casa as letras “a” ou “b” ou “c” ou “d”
    [^abc] Lista negada Casa qualquer caractere, exceto “a”, “b” e c
    (esse|aquele) ou Casa as palavras “esse” ou “aquele”
    Meta Nome Quantidade
    a{2} Chaves Casa a letra “a” duas vezes
    a{2,4} Chaves Casa a letra “a” de duas a quatro vezes
    a{2,} chaves Casa a letra “a” no mínimo duas vezes
    Meta Nome Quantidade II
    a? Opcional Casa a letra “a” zero ou uma vez
    a* Asterisco Casa a letra “a” zero ou mais vezes
    a+ mais Casa a letra “a” uma ou mais vezes
    Meta Nome Curingas
    . Ponto Casa qualquer caracter
    .* curinga Casa qualquer coisa, é o tudo e o nada

    Não há limite para as combinações entre caracteres e metacaracteres. Uma Expressão Regular pode ser tão simples como “^a”, ou pode ser uma grade sopa de caracteres que estende por várias linhas. A complexidade da expressão está diretamente relacionada à complexidade do texto que precisará ser pesquisado.

    Como Testar Expressões na Linha de Comando

    Na linha de comando, a melhor ferramenta para se testar o uso de ERs é o comando egrep. Aplicando a ER em um texto, o comando mostra todas as linhas que “casam” com aquela expressão.

    Vamos listar as linhas que contenham os textos de referência instagram e googleads no arquivo
    /usr/local/thunder/logs/access.log:
    tail -f /usr/local/thunder/logs/access.log | egrep '(instagram|googleads)'

    Obtemos como saída:

    1384025070 580 192.168.0.2 NONE/200 4933 4933 0 0 GET instagram.com/api/v1/feed/timeline/?max_id=585513469303189276_426740378 (instagram.com) ((null)) 1
    1384025074 577 192.168.0.2 MEM_MISS/200 64336 64336 64336 0 GET distilleryimage6.ak.instagram.com/9a74d94c495b11e3bf200a16a556a2d2_8.jpg (distilleryimage6.ak.instagram.com) (51169e2b47208fec567ed87e366a5865) 2
    1384025075 813 192.168.0.6 NONE/200 47 47 0 0 GET googleads.g.doubleclick.net/aclk?sa=L&ai=CdImExot-Ute0DZPT0AH7pIGYDaHLyOoDyYv3vnix0vmLARABIOP7kwNQ3u rsq_3_____AWDN6OOAgAPIAQXgAgCoAwGYBAWqBMIBT9BFGcls X2Zd1gqIThxB2jq5Socpo2yTQvpF9XvWUWsfwaKIXGRj_eoXl8 RK5zH7LV7FcriQdbHH2E5qoRmrVEprrdeBeEmU7F4RVHjyXpoH WMOVqzS4Ku_Dp3R_08LgwoYbaJYpdA8_mz-flBnPGM8dzAMCVsfaG9z52p7IXjzdSeEgp2q3ERcvyNNXDSYm-ea5CoV3CROs2SJMZWjLmV6DAhJq5hNwVCNBWWIpYp99x-Bl4Ga-AjbEr8dr4VBzFQfgBAGgBhyAB_mPsCw&num=1&sig=AOD64_02 M_glFy8lgpuS4ZmJBSTFhNooFQ&client=ca-pub-6219811747049371&adurl=https://ad.doubleclick.net/clk%3B277355086%3B104752988%3Bw&ctype=18 (googleads.g.doubleclick.net) ((null)) 1


    Usamos acima o metacaractere “ou”, listando instagram ou googleads no transcorrer do arquivo de Log do Thunder. É evidente que mostrei só dois resultados do comando.


    Agora sairemos do contexto do ThunderCache e adentraremos mais a fundo em um servidor Unix/Linux. Vamos analisar o arquivo de banco de dados dos usuários do sistema, o arquivo passwd:

    Arquivo /etc/passwd:



    Por exemplo, para listar somente a linha que contenha a palavra root:


    Observe que o comando procura por root somente, e outras linhas contendo a palavra root acabaram aparecendo.
    Mas imagine que queiramos exibir somente a linha que tenha a palavra root no início. Para isso utilizamos uma Expressão Regular:


    Bem melhor

    Podemos tentar expressões mais complicadas nesse arquivo, como as que seguem:

    Nesse exemplo listamos no arquivo /etc/passwd as linhas que iniciem com vogal.


    Ou de repente queiramos exibir somente as linhas que contenham “root” e “www” no início no arquivo /etc/passwd:


    Linhas que contenham os textos “mail” e “spool” na mesma linha:


    Logins com 4 caracteres:


    Linhas que não terminem com : (dois pontos) :


    Linhas que contenham números com mínimo de 3 dígitos:



    Outros exemplos:
    Licen(ça|se) Procura pela palavra Licença em português e Inglês
    (sexo|ware[sz]|crack) Procura pelas palavras listadas
    ^[0-9] Procura por linhas que iniciem com números
    [0-9]{2}:[0-9]{2} Procura por um horário no formato HH:MM
    [0-9]{2}/[0-9]{2}/[0-9]{4} Procura por uma data no formato DD/MM/AAAA
    R\$[0-9]{1,3},00 Procura um valor entre 0 e 999 reais
    [a-z0-9.-]+@[a-z0-9.-]+ Procura por endereços de e-mail


    DICAS MUITO IMPORTANTES:

    · Pratique cada um dos metacaracteres na linha de comando para fixar sua função. Assim como em uma caixa de ferramentas, é importante saber o que faz cada componente, para depois utilizá-los em conjunto.

    · Se a expressão tender a ficar muito complicada, monte-as aos poucos, testando cada parte antes de prosseguir.

    · Na linha de comando, sempre coloque a Expressão Regular ‘entre aspas simples’, para que o Shell não tente interpretá-la como um comando ou uma variável.

    · No VIM, use ERs na busca com o comando “/” e na substituição de textos com o comando “s/isso/aquilo/”.

    · Em ferramentas mais antigas como VIM, find, sed e awk, os seguintes caracteres deverão ser precedidos de uma contrabarra “\” para serem metacaracteres: { } ( ) | + ?

    · Aplicativos antigos podem não ter suporte a todos os metacaracteres listados, cheque a documentação em caso de dúvida.

    · A partir da versão 3.0 o Shell bash possui um operador para testar Expressões Reegulares, que é o “=~”. Exemplo de uso: if [[ “1234” =~ ‘[0-9]{4}’ ]]; then echo OK; fi.

    · Para casar os caracteres literais que compõem os metacaracteres, é preciso colocar uma contrabarra “\” antes. Assim, para casar um colchete que abra, faz-se: “\[”.

    · A ER “^$” procura por linhas em branco, é um começo de linha seguido de um final de linha, ou seja, uma linha com nada.

    · O “.*” é o curingão das Expressões Regulares, casando nada (qualquer caractere zero vezes) e tudo (qualquer caractere várias vezes.)

    · Não confundir Expressões Regulares com os curingas do Shell (glob). No Shell, * ? [] e {} são especiais, como em “ls *.txt” e “ls becape-????-??-??.tgz”. Esses curingas são usados na linha de comando e em scripts, e seu funcionamento é diferente das expressões.

  2. #2
    Junior Member
    Data de Ingresso
    Jul 2015
    Posts
    1
    Thanks (Given)
    0
    Thanks (Received)
    0
    Likes (Given)
    0
    Likes (Received)
    0
    funcionando como uma ferramenta para auxiliar na busca de textos.
    sbobet mobile

Marcadores

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •