Introdução a Regex

Este tutorial refere-se ao início com a meta-linguagem Regex

Bom, estarei falando sobre um recurso muito interessante implementado também na linguagem Java, chamado de Regex. Para muitos este nome pode até causar arrepios, mas é bem legal e interessante sua função, podendo ser usado para buscas, validação, etc. Em seguida, estarei discutindo um pouco sobre tokenização, usando o método split() da classe java.lang.String. Então vamos ao que interessa, ao Regex.

Bom, as expressões regulares (regex), é um recurso onde podemos ta fazendo busca com apenas simples caracteres (sequência de letras, dígitos, etc) ou com metacaracteres. Logo, para utilizarmos tais vantagens precisamos obviamente, indicar uma fonte e os caracteres de buscas. Como faremos isso? Simples, a API Java fornece duas classes especificas para tal tarefa, no pacote java.util.regex, sendo elas: java.util.regex.Pattern e java.util.regex.Matcher. Então, vamos ao nosso primeiro exemplo.

De Matcher estaremos estudando os métodos: find(), start(), group(), end();

Temos como fonte: mouse da cor azul. Logo, quero encontrar onde estar a palavra cor, na nossa frase(em negrito). E agora!?

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex { public static void main(String[] args) { String fonte = “mouse da cor azul”; String queremosIsso = “cor”; /* * Nesse momento obteremos uma instância de Pattern, através do * método * static compile(String regex), o qual recebe uma String que é a * expressção regular */ Pattern p = Pattern.compile(queremosIsso); /* * Aqui, através da instancia de Pattern, chamando o método * matcher() e passando a fonte de busca */ Matcher m = p.matcher(fonte); //Ligando o motor while (m.find()) { //Obtendo o inicio do que foi encontrado System.out.println(m.start()); } } }

Ao executarmos este código, obteremos como resposta 9 (nove). Mas, por que 9? Primeiro vamos ver o que acontece.

Após termos obtidos as instancias de Pattern e Matcher, em um loop (while) chamamos o método m.find(). Ao chamarmos este cara, o motor regex é disparado, ou seja, a tarefa de busca é efetivamente iniciada. Vale lembra que o motor regex, executa a busca da esquerda para a direita e ao passo que ele encontrar uma ocorrência, está não participara mais do processo de busca. Logo abaixo no código, chamei o método m.start(). Esse método retorna um inteiro, onde este representa, o índice inicial de cada sequencia encontrada, que neste caso seria 9 (nove). Lembrado que começa do zero. Abaixo segue as letras e seus índices (onde estiver duas aspas sem conteúdo, representam espaços).

0-m 1-o 2-u 3-s 4-e 5-’ ‘ 6-d 7-a 8-’ ‘ 9-c

mouse da cor azul. Existe também como falei no início, o método group(). Este é responsável por trazer o grupo de caracteres que foi encontrado na busca.

//Ligando o motor while (m.find()) { //Obtendo o inicio do que foi encontrado System.out.println(m.start() +” “+ m.group() +” “+ m.end()); }

Terá como saída: 9 cor 12. Em seguida o método end(), onde este é a contra partida de start( ), trazendo o índice do ultimo caracter encontrado, porém esse o índice inicia no um (1), bem simples neh isso.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados