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