Aqueles que utilizam Linux conhecem a importância de como manipular textos, visto que tudo nesse sistema ocorre em arquivos de configurações. No ponto de vista de segurança, saber localizar uma informação pode ser crucial e, para programadores, controlar a entrada de dados deixando o sistema mais estável e seguro também é interessante.

Em ambos os casos a utilização de ERs (Expressões Regulares) é uma ótima (senão a melhor) opção. Suponha uma situação em que você precisa corrigir a palavra “Ruann”, ela está escrita em vários lugares de formas diferentes como “Juann”, “Huann” e “Luann”. Com as ERs resolver este problema é bastante simples e existem diversas formas.

Vamos então entender alguns de seus conceitos e componentes básicos. O objetivo das ERs é utilizar metacaracteres para combinar um padrão de busca, como o recurso de “Localizar” do Microsoft Words, por exemplo. Metacaracteres são símbolos utilizados para compor a ER, sendo alguns deles:

  • . – Ponto
  • ? – Opcional
  • * – Asterisco
  • + – Mais
  • ^ – Circunflexo
  • $ – Cifrão
  • | – Ou
  • [] – Lista
  • {} – Chaves
  • () – Grupo
  • \ – Escape
  • – Traço

                Tratando inicialmente da Lista, ela limita quais caracteres vão combinar o padrão. Ou seja, apenas o que estiver dentro da lista será mostrado na busca. Na palavra “Arara”, caso utilize a expressão [a], apenas as letras “a” minúsculas irão aparecer, isto é: “aa”.

  • O Circunflexo possui duas funções: Indicar o início de uma linha e negar a lista. Para negar a lista, basta colocar o Circunflexo no início da mesma: [^a], isto irá fazer com que ela busque todas as letras com exceção da letra “a”, no exemplo “Arara” apenas as letras “Arr” apareceriam. Para indicar o começo da linha basta utilizá-la no começo da expressão e fora da lista, por exemplo: “^[0-9]”, isto irá fazer com que a sua expressão busque por linhas que comessem com números de 0 a 9.
  • O Ponto é um curinga, isto é, com ele é possível procurar por qualquer coisa, por exemplo, caso queiramos procurar a palavra “Ruann” num texto que esteja escrito com J, H e L, podemos usar a ER “.uann”. O ponto informa qualquer caractere em sua posição. O único problema é que caso esteja escrito “6uann” ele também irá encontrar, desta forma torna-se necessário o uso da lista ou do grupo.
  • O Ou serve para procurar uma palavra ou outra, por exemplo, caso queira procurar pela palavra Ruann ou Juann, basta utilizar a ER Ruann|Juann.
  • E falando no Ou, podemos deixa-lo mais interessante se utilizarmos com o Grupo. O Grupo serve para especificar um grupo de ERs que serão verificadas primeiro, como em expressões matemáticas. Neste caso blocos de ERs. Novamente, para procurar num texto a palavra Ruann ou Juann, pode-se utilizar um grupo para especificar as letras desejadas e não sofrer com o problema observado ao utilizar o ponto. Desta forma, podemos utilizar a ER (R|J)uann, assim apenas as palavras Ruann com R ou J aparecerão.
  • O Opcional define que um determinado caractere pode ou não aparecer, ou seja, podemos procurar por Ruann com R, J e talvez L, como por exemplo: (R|J|L?)uann, desta forma tendo ou não Ruann com L, a ER irá funcionar. Note que ela é colocada imediatamente após a letra a qual você deseja que seja opcional.
  • O Asterisco indica que um determinado caractere pode aparecer em qualquer quantidade, por exemplo: R*uann, pode aparecer uann, Ruann, RRuann, RRRRRRuann.
  • O Mais indica que o caractere precisa aparecer uma ou mais vezes, novamente no exemplo Ruann, pode-se escrever a ER R+uann, assim o sistema retornará Ruann, RRuann RRRRRRuann. Note que o uann não aparece, pois, o R precisa aparecer pelo menos uma vez.
  • O Cifrão funciona de maneira similar ao Circunflexo, porém, ele procura palavras no final da linha. Utilizando o mesmo exemplo do Circunflexo, podemos procurar por linhas que terminem em números, como por exemplo: [0-9]$, isto é, linhas que terminem em números de 0 a 9.
  • O Traço serve para criar intervalos dentro de listas, como nos exemplos anteriores, podemos procurar pelo intervalo de 0 a 9 utilizando a ER [0-9].
  • As Chaves para criar intervalos numéricos também como de 0 a 5: {0,5}, de 10 a 20: {10, 20}, exatamente 1: {1}. Note que ela pode ser usada similarmente ao Opcional, Asterisco e o Mais, respectivamente por {0,1}, {0,}, {1,}.
  • O Escape serve para utilizar o sentido literal de um metacaractere, por exemplo, caso queira procurar por uma palavra que comece com um circunflexo, basta utilizar a ER \^Ruann.

                Existem diversas outras informações sobre Expressões Regulares, tendo em vista que este é um assunto bastante extenso, contendo peculiaridades em cada aspecto. Conhecer este assunto pode ser bastante útil em determinadas situações, facilitando algum tipo de trabalho.

Você pode facilmente escrever um script em Shell para buscar por excesso de permissões no sistema, dando a opção de o usuário escrever por octais qual permissão ele deseja buscar, controlar essa alteração por Expressões Regulares torna-se algo mais simples.

Como dito, ainda no contexto de segurança elas podem ser utilizadas para procurar alguma informação específica em algum documento, ou no fim, apenas para facilitar seu dia-a-dia pois pode ser utilizada em diversos softwares, como Google Docs, Microsoft Word, Notepad++, etc.

Autor

  • Ruann Melgaço

    Ruann é um desenvolvedor de jogos que caiu de paraquedas na área de segurança, talvez por paranoia. Apaixonado por jogos e desenhos antigos, mas mais ainda por ficar sentado em praças bebendo suco de uva imaginando quando vai aparecer alguém pra falar sobre magia dos jogos em pixel art e sobre segurança da informação.

    Ver todos os posts

Views: 58