Expressões regulares em Java – Parte 1

  Olá pessoal,
    Nest post irei demonstrar rapidamente a utilização de Expressões Regulares em Java, supondo é lógico, que o leitor já sabe o que é uma expressão regular e conhece o funcionamento das mesmas.
   Indo direto ao ponto, em Java existem duas classes principais com essa finalidade, são elas: “java.util.regex.Pattern” e “java.util.regex.Matcher”. A primeira, é a representação de uma expressão regular compilada em Java, já a segunda classe, é uma “engine” que permite comparar as suas expressões regulares com um conjunto de caracteres.

   Para entender como trabalhar com essas classes, nada melhor do que um exemplo não é mesmo ? então vamos lá. Primeiramente vamos supor a seguinte situação, digamos que em uma determinada frase, “Eu fui a escola”, eu deseje localizar a palavra “fui”, isso ficaria como no exemplo abaixo.

Exemplo 1
       Agora vamos entender o Exemplo 1 !  A linha 10 cria uma expressão de comparação(Ai pode ser uma regex propriamente dita ou uma string qualquer) utilizando o método estático “compile” da classe Pattern, já na linha 12 o método matcher é invocado passando a string alvo da comparação, para isso, você irá utilizar o objeto pattern que contém a expressão regular compilada(No nosso caso o objeto “p”).
     Feito tudo isso, basta percorrer a cadeia de caracteres(“Eu fui a escola”) utilizando o método “find()” da classe Matcher, este método irá varrer esse conjunto de caracteres e comparar com a expressão compilada.
     Uma vez casando os caracteres,  ele irá separa-los em grupos, a linha 15 apenas exibe os grupos encontrados.
      
      O resultado do exemplo 1 no console é:   “fui”.
       Uma outra coisa interessante que precisa ser mencionada, é como a classe Matcher localiza os caracteres sendo procurados, para isso ela utiliza o intervalo aberto a esquerda e fechado a direita, ou seja, os indíces começam em Zero e terminam em  lenght() – 1, como mostrado na figura abaixo:
          
        Com os métodos start() e end() da classe Matcher, você consegue obter os indíces inicial e final dos grupos encontrados, como no exemplo abaixo.

Exemplo 2
          Saída no console:
                                          Start : 3

                                          Grupo : fui
                                          End   : 6

     

     Metacharacters

       São caracteres especiais utilizados para que facillitar e tornar mais dinamica a nossa busca, os metacaracteres suportados pela API são ([{\^-$|]})?*+.   

    Character Classes

     Um recurso disponivel e que torna a utilização de expressões regulares bastante interessante, são as “Classes de Caracteres”, logo abaixo, uma lista com as principais.

     Com o uso das classes de caracteres, você reduz a sua busca por caracteres em um pequeno trecho de
código, como mostrado nos exemplo  logo abaixo:
  
    Exemplo 3

    Dada a expressão regular:
 
    [cpl]ata

    Ela irá casar com as seguintes palavras:

    lata 
    cata

    pata
         
    Já a expressão regular

    [^d]ove

    Irá casar com

    love , mas não com dove

    Que tal a expressão  
   
     [a-zA-Z]ta

    Que casa com
 

     ata ou Ata
     bata ou Bata

     cata ou Cata

    Podemos utilizar ainda o conceito de união de conjuntos

 
     [b-d[m-p]]adaria
   

     Que casa com
     
      badaria

      padaria
      madaria
      nadaria

  
    No próximo post, coloco um pouquinho de Quantificadores e Consultas Avançadas com Regex em Java, inté.

    Mais informações

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s