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.
Expressões Regulares com Google Planilhas
Muitas linguagens, ferramentas e plataformas utilizam expressões regulares e sua utilização é
importante para todas elas. Conhecer REGEX certamente ajudará os profissionais em Análise e
Desenvolvimento de Sistemas a resolver muitos problemas em qualquer área de atuação. Nesta
Disciplina, considerando as diferentes experiências e habilidades dos estudantes, optamos por
avançar com a utilização da Google Planilhas. Além de não ser necessária a instalação e a
configuração, a ferramenta está disponível on-line. Dessa forma, todos poderão acessá-la sem
grandes esforços e utilizar sua lógica em qualquer linguagem de programação.
Inicialmente, podemos utilizar a função Find and Replace, disponível em Google Docs, Google Slides e
Google Sheets. Com um documento aberto, navegue até o menu Editar e clique em Localizar e
Substituir. Ao lado de “Localizar”, digitamos a expressão procurada e caso haja a necessidade de
substituição será preciso preencher o novo termo no campo “Substituir”. Para ativar a REGEX,
clicamos em “Pesquisar usando expressões regulares”.
Na ferramenta de planilha, as expressões regulares são úteis para resolver problemas com strings de
texto por meio da combinação de padrões e, por meio dela, podemos encontrar nomes ou números
de telefone entre uma grande quantidade de dados, validar endereços de e-mail, extrair URLs,
renomear nomes de arquivos etc.
Para trabalhar com REGEX no âmbito das planilhas, a Google disponibiliza três funções:
REGEXMATCH, REGEXEXTRACT e REGEXREPLACE. Com ela, podemos localizar e substituir strings de
texto, incluindo caracteres, números e palavras ou padrões por expressões regulares documentos,
planilhas e slides.
REGEXMATCH confirmará se encontrou o padrão no texto;
REGEXEXTRACT extrairá o texto que corresponde ao padrão;
REGEXREPLACE substituirá o texto que corresponde ao padrão.
A função REGEXMATCH retorna TRUE se corresponder ao padrão fornecido for localizado em
qualquer lugar do texto e FALSE caso não haja correspondências no texto. Vejamos uma breve lista
com livros da série Vaga-Lume, uma coleção que fez a cabeça de muitos jovens e adolescentes
entre os anos 1970 e 2000. No primeiro exemplo, a expressão ‘=REGEXMATCH(A2, “[0-9]”)’ retornou
TRUE apenas para as células cujo texto continha algum valor numérico:
Considerando esse mesmo exemplo, você poderá extrair o ano de publicação dos livros. Para isso,
foi criada uma coluna chamada ano e utilizada a função REGEXEXTRACT. Observe que o
metacaractere dígito seguido do sinal de positivo retornou valores individuais para as células que
continham valor numérico e o erro #N/A para a única que não continha. Embora não seja o foco,
saiba que a Google Sheet fornece uma função para tratar esse tipo de erro ISNA() que, quando
combinada a outras funções, poderia dar um tratamento mais adequado ao problema. Experimente
usar a expressão ‘=IF(ISNA(REGEXEXTRACT(A4,”\d+”)),FALSE)’.