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