Expressões Regulares: Desmistificando a Certificação SCJP6 Parte XI - Parte 1

Nesta parte desta série de artigos sobre certificação utilizaremos as classes java.regex.Matcher, java.regex.Pattern e java.util.Scanner para nos auxiliar a encontrar coisas.

Expressões Regulares

Uma expressão regular é um modelo formal de apontar um padrão de texto. De modo mais específico, é uma composição de caracteres e símbolos com funções especiais que, quando reunidos entre si e com caracteres literais, formam uma sequência, ou seja, uma expressão.

Essa expressão será avaliada como uma regra que sinalizará sucesso se uma entrada de dados qualquer combinar com essa regra.

Veja com muita atenção o exemplo e a saída. Em seguida explicaremos outros detalhes da sintaxe Java para o uso de regexps.

package devmedia; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExpressaoRegex { /** * @param args */ public static void main(String[] args) { Pattern p = Pattern.compile("e.tende"); Matcher m = p.matcher("Subclasse estende a Superclasse"); boolean b = false; System.out.println("Padrão: "+m.pattern()); while(b = m.find()){ System.out.println(m.start()+" "+m.group()); } System.out.println(); Pattern p1 = Pattern.compile("23.34"); Matcher m1 = p1.matcher("Já são 23:34."); boolean b1 = false; System.out.println("Padrão: "+m1.pattern()); while(b1 = m1.find()){ System.out.println(m1.start()+" "+m1.group()); } } } Saída: Padrão: e.tende 10 estende O padrão é: 23.34 7 23:34

Analisaremos outro metacaractere de representação: a lista [...]. Ela possui total consciência do que quer e nada diferente daquilo casa com quem ela tem conhecimento. Observe o código a seguir:

package devmedia; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExpressaoRegex { /** * @param args */ public static void main(String[] args) { Pattern p = Pattern.compile("e[xs]tende"); Matcher m = p.matcher("Subclasse estende e/ou extende a Superclasse?"); boolean b = false; System.out.println("Padrão: "+m.pattern()); while(b = m.find()){ System.out.println(m.start()+" "+m.group()); } } } Saída: Padrão: e[xs]tende 10 estende 23 extende

Vimos, até agora, o básico da sintaxe Java para regexps, vamos mostrar na tabela abaixo o Pattern e os Matchers possíveis.

Pattern Matcher
pi[aã]o piao pião
[Jj]Ava Java Java
Bo[nN]é Boné BoNé
11[:. ]25 11:25 11.25 11 25
<[ABC]> , ,

Dentro da lista, o ponto não é metacaracteres; ele é apenas um ponto. Ou seja, todo caractere na lista é normal.

Na próxima parte continuaremos a tratar sobre regex.


Leia todos artigos da série

Artigos relacionados