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

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s