Caçando palavras com expressões regulares
Por Alejandro Moraga
Palavras são conjuntos de letras minúsculas e/ou maiúsculas.
([A-Za-z]+)
Parênteses delimitam um bloco que quando encontrado deve ser retornado;
A-Z representa as letras maiúsculas; a-z representa as letras minúscula; e
“+” indica que deve existir ao menos uma letra e pode haver outras inúmeras (uma ou mais).
Vamos testar a expressão regular em algumas palavras:
([A-Za-z]+)
Palavra
Resultado
Casa
Sim
sapato
Sim
Ação
Não
Árvores
Não
Como era de se esperar, funcionou para “Casa” e “sapato”. Mas não funcionou para “Ação” e “Árvores” porque A-Za-z não inclui diacríticos, sinais gráficos colocados sobre, sob ou através de algumas letras, como a cecedilha “ç” de “Ação” e o acento agudo no “Á” de “Árvore”.
É necessário acrescentar na expressão regular algo que represente essas letras “modificadas”. Não convém colocar uma a uma dentro dos colchetes porque existem várias combinações e há grande chance de esquecer algumas, sem falar no trabalho que vai dar.
Expressões Regulares e Acentuação
[A-ZÀ-Úa-zà-ú]
A solução mais simples e elegante é usar À-Ú para letras maiúsculas com acentução eà-ú para letras minúsculas.
Vamos testar nossa expressão regular modificada:
([A-ZÀ-Úa-zà-ú]+)
Palavra
Resultado
Habitação
Sim
àquelas
Sim
Guarda-chuva
Não
vê-las
Não
Um novo problema: palavras compostas ou “palavras dentro de palavras”. Palavras ligadas por hífen. Temos, por exemplo: cabeça-dura, feijão-preto, físico-químico.
Expressões Regulares e Palavras compostas
O hífen não pode ser simplesmente incluído entre os colchetes pois aceitaria combinações como: “-palavra”, “palavra-” e “-palavra-”. É necessário que, caso exista hífen tenha pelo menos uma letra antes e depois.
([A-ZÀ-Úa-zà-ú]+(?:-[A-ZÀ-Úa-zà-ú]+)?)
O padrão para letras foi duplicado a direta e um hífen foi acrescentado no meio. Se tiver um hífen necessariamente deve existir pelo menoss uma letra a direita desse hífen. O