Introdução a Regex

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (4)  (1)

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



Regex - Expressões Regulares

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). Lembrabdo 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.

Ex: //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.



Valeu pessoal!
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?