Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo. Nesse trabalho almejamos fazer uma breve descrição teórica sobre
os conceitos de linguagens regulares e expressões regulares e posteriormente
realizar uma análise de implementações do pacotejava.util.regex.
1. Linguagem Regular
Uma linguagem regular é uma linguagem formal definida usando um conjunto
finito de regras sintáticas. A partir destas regras, podemos criar uma variedade infinita
de sentenças válidas usando apenas um número finito de sı́mbolos. As linguagens regu-
lares são usadas para representar expressões matemáticas, cálculos lógicos e também em
computação, para a criação de linguagens de programação e processamento de texto.
As linguagens regulares são divididas em duas classes: as linguagens deter-
minı́sticas e as não-determinı́sticas. As linguagens determinı́sticas são aquelas que
podem ser processadas usando um único passo de processamento, enquanto as não-
determinı́sticas requerem mais de um passo. As linguagens regulares determinı́sticas
são mais fáceis de serem processadas, mas às vezes é necessário usar linguagens não-
determinı́sticas para representar expressões matemáticas ou lógicas mais complexas.
2. Expressões Regulares
As expressões regulares são um conjunto de sı́mbolos usados para representar uma
linguagem regular, são compostas por um conjunto de caracteres e são usadas para rep-
resentar um conjunto potencialmente infinito de sequências. Elas são usadas em diversas
áreas, como processamento de texto, busca e substituição de texto, criação de linguagens
de programação e validação de dados.
Expressões regulares são formadas por um conjunto de caracteres que podem ser
usados para representar uma variedade de sequências de caracteres. Cada caractere tem
um significado especı́fico e pode representar um conjunto de caracteres. Por exemplo, o
caractere ”.” pode ser usado para representar qualquer caractere, enquanto o caractere ”*”
pode ser usado para representar zero ou mais ocorrências do caractere anterior.
if(matchFound) {
System.out.println("Match encontrado");
}
while(matcher.find()) {
System.out.println("Match encontrado");
}
No exemplo acima iremos printar na tela ”Match found” para cada vez que encon-
trarmos uma ocorrência da palavra ”gato” na string.
Outro exemplo comum de RegEx é utiliza o método replaceAll() da classe
Matcher para substituir todas ocorrências de determinada palavra:
String input = "O gato subiu o morro";
Pattern pattern = Pattern.compile("gato");
Matcher matcher = pattern.matcher(input);
String output = matcher.replaceAll("cachorro");
System.out.println(output);
}
Acima substituı́mos a palavra ”gato” toda vez que ela aparece por ”cachorro” e
então printamos a string resultante. Alternativamente, podemos utilizar o método re-
placeFirst() para substituir apenas na primeira ocorrência da palavra referente à nossa
expressão.
O Java nos traz uma infinidade de possibilidades de expressões regulares que po-
dem ser utilizadas e apenas fizemos uma breve introdução do caso de uso mais simples
possı́vel para demonstrar os principais métodos, mas pode-se construir expressões regu-
lares extremamente complexas e poderosas utilizando a sintaxe combinada de RegEx. Um
exemplo um pouco mais complexo pode utilizar, por exemplo, a expressão ”[ˆA-Za-z]”
para remover todos números de uma string utilizando o método replaceAll().
4. Referências Bibliográficas
NOURIE, Dana; MCCLOSKEY, Mike. Regular Expressions and the Java Pro-
gramming Language. Oracle, 2002. Disponı́vel em: https://www.oracle.com/technical-
resources/articles/java/regex.html. Acesso em: 5 de outubro de 2022.