Outros Metacaracteres
Quanto trabalhamos com listas, sabemos que a expressão ‘^[AO]’ representa uma busca que dará
match com algum dos artigos, A ou O, no início da linha. Essa comparação também poderá ser realiza
entre listas com o operador barra vertical ‘|’. Dessa forma, poderíamos buscar os artigos em seu
formato literal com a instrução ‘A|O’ ou, então, buscar termos entre diferentes listas. Considere a
Tabela de Horários apresentada anteriormente. Caso fosse necessário buscar partidas às 7h30 ou às
9h30, a expressão ‘[\d]7|[\d]9:30’ resolveria o problema.
Esse último exemplo dá dimensão do poder dos metacaracteres utilizados em conjunto. Pode-se
trabalhar, ainda, em grupos de caracteres, utilizando os parênteses de abertura e fechamento‘()’.
Esses blocos ajudam a buscar termos específicos como, por exemplo: ‘a(b|c)d’, que pode dar
match com ‘abd’ ou ‘acd’, enquanto ‘ab|cd’ retornará ‘ab’ ou ‘cd’. Para ficar mais claro, pense na
instrução ‘(super l hiper) mercado’. Quais seriam os resultados?
Além de agrupar um conjunto de caracteres, os parênteses também podem ser úteis para
realizarmos substituições. Os grupos são naturalmente identificados em ordem numérica e, por isso,
na sequência ‘([0-9]{2})([0-9]{2})’ seria identificada como $1$2. Considerando a timetable do 782,
podemos facilmente adicionar os dois pontos substituindo a expressão por ‘$1:$2’.
Ao longo desta Disciplina, vimos o símbolo ‘\d’, uma barra invertida acompanhada de uma letra que
representa um valor numérico. Com ele, podemos localizar valores entre 0 e 9 dentro de
expressões aumentando a abrangência desse recurso. Ele faz um conjunto de metacaracteres do
tipo barra-letra e aumenta substancialmente o poder das expressões regulares.
Cada letra representa um comando diferente. Por exemplo, se for necessária uma busca por
caracteres numéricos, já sabemos que o ‘\d’, que também pode ser representado como lista [0-9], é
uma opção. E se precisássemos rastrear os valores não numéricos, é simples, utilizamos o ‘\D’, ou
seja, existe diferença entre letras maiúsculas e minúsculas. Experimente buscar os espaços em
branco com ‘\s’ e preenchidos com o ‘\S’, ou, então, ‘\w’ que corresponde a qualquer caractere
alfanumérico e ‘\W’ que corresponde a qualquer caractere não alfanumérico.
Isso não significa que todas as letras do alfabeto tenham sido utilizadas. É preciso ter em mente que
cada Linguagem de Programação, sua interface de desenvolvimento (IDE) ou aplicação que permite
a utilização de REGEX tem sua própria notação. Além disso, podemos fazer equivalências entre os
metacaracteres barra-letra e as classes POSIX. A principal vantagem de utilizar o barra-letras é que
eles podem ser usados fora das listas.