Para a nossa sorte, alguns artifícios foram criados para auxiliar o trabalho com listas. Sobretudo,
quando pensamos na localidade do sistema, as classes denominadas POSIX operam como um
padrão para determinar interfaces comuns entre sistemas operacionais. Embora sejam declaradas
entre dois pontos e colchetes, é importante lembrar que esses colchetes não se referem às listas.
Vejamos algumas:
[:upper:] – busca letras maiúsculas, equivalente a [A-Z]; [:lower:] – busca letras minúsculas, equivalente a [a-z]; [:alpha:] – busca letras maiúsculas e minúsculas, equivalente a [A-Za-z]; [:alnum:] – busca letras e números, equivalente a [A-Za-z0-9]; [:digit:] – busca letras e números, equivalente a [0-9]; [:punct:] – busca sinais de pontuação, equivalente a [.’ !?: … ].Para contextualizar a utilização de algumas dessas classes, pensemos em uma nuvem de palavras na
qual os termos mais comuns são apresentados com maior destaque. A contagem das palavras
apresentadas exige que todas as pontuações sejam removidas e com isso a instrução ‘[[:punct:]]’
seria o suficiente para localizar todas as ocorrências e então removê-las. Outra forma de atender a
solução seria buscar todos os caracteres alfanuméricos, ou seja, letras e números e, então, negar a
lista dessa forma ‘[^[:alnum:]]’.
Embora existam outras classes, nesta Disciplina, iremos nos concentrar nas que foram apresentadas
até agora. Você perceberá que elas são suficientes para cobrir grande parte das combinações e para
iniciar suas REGEX de forma muito ampla. Além disso, esse é um convite para que você acesse os
Materiais Complementares e aprofunde o conhecimento no assunto.
Metacaracteres Tipo Quantificador
Em uma sequência de caracteres, é comum que haja repetições ao longo do documento e
quantificar essas ocorrências é fundamental para criarmos REGEX. A categoria de metacaracteres do
tipo quantificador permite verificar o número de repetições entre as entidades. Iniciando pelo
operador simbolizado pelo ponto de interrogação ‘?’, ele é o chamado opcional e sempre dará match
se houver ou der ocorrências da entidade anterior. A instrução ‘código?’ retornaria tanto a palavra
‘código’ quanto a palavra ‘códigos’ no plural.
Para buscar as repetições também podemos utilizar o asterisco ‘*’, que retorna o resultado positivo
com zero ou mais ocorrências e o sinal de positivo ‘+’, que dá match quando localiza uma ou mais
ocorrências. Considerando uma página web com código HTML e suas tags de abertura e
fechamento, a instrução ‘</+html’ daria match apenas com a tag de fechamento. Isso, porque exige
que um ou mais atributos ‘/’ sejam contemplados, enquanto ‘</*html’, em que não existe a
ocorrência da entidade, retorna positivo para ambas as tags.
Para concluir os metacaracteres quantificadores, temos as chaves ‘{}’. Com elas, podemos especificar
exatamente quantas repetições do elemento anterior estamos procurando. É possível buscar o
número exato de ocorrências utilizando ‘{valor}’, ou intervalos com ‘{min,max}’ e ‘{min,}’. Faça o teste:
qual seria o match da REGEX ‘\d{4}’ para o número de telefone: (99) 99999-9999?
Metacaracteres Tipo Âncora
Os metacaracteres do tipo âncora marcam uma posição específica na linha. As âncoras comumente
usadas são o acento circunflexo ‘^’ e o cifrão ‘$’. Eles correspondem, respectivamente, ao início e ao
final de uma linha.
Alguns dos exemplos são:
^[AO] – localizar linhas iniciadas pelos artigos definidos;
[0-9]$ – localiza linhas dígitos ao final da linha e não da palavra; [.;]$ – localiza linhas que encerram com um ponto final ou ponto e vírgula.Observe que os metacaracteres ‘^’ e ‘$’ operam nas linhas. Caso seja necessário buscar termos
específicos, precisaremos utilizar a borda ‘\b’. Com ela, poderemos buscar palavras específicas por
seu prefixo ou sufixo.
Cabe lembrar, ainda, que o acento circunflexo também pode ser utilizado dentro das listas. Nesse
caso, ele tem a característica de negação, ou seja, enquanto a expressão ‘^[0-9]’ buscaria linhas
iniciadas em números, ‘^[^0-9]’ faria exatamente o contrário.