Regex na prática

Regex, também conhecido como expressão regular, é uma série de caracteres capaz de descrever outras séries de caracteres.

Por exemplo, uma palavra ou número, uma palavra seguida de um número ou de outra palavra, um certo caractere no final da linha, e assim por diante.

Vejamos alguns exemplos:

· “telefone” – representa uma única palavra, “telefone”;

· “[0-9]+” – representa um número inteiro composto de um ou mais dígitos de 0 a 9;

· “A_?\d+” – representa um fragmento de texto que começa com a letra “A”, seguido opcionalmente pelo caractere sublinhado “_”, e terminando com um número inteiro.

No primeiro exemplo, somente caracteres literais foram utilizados. Nos demais, além de caracteres literais, foram usados alguns caracteres especiais, ou meta caracteres.

Vejamos o exemplo de um numero telefônico formatado, utilizando expressão regular:

3412-1234

Como podemos ver este dado é composto somente de caracteres numéricos e é formatado com quatro caracteres numéricos, um caractere “-” e mais quatro caracteres numéricos. Vejamos como ficaria a expressão regular que expressaria essa regra:

\d{4,4}-\d{4,4}

Um aviso importante é que para utilizá-los em uma aplicação dentro de uma String devemos utlizar duas barras, “\\d”.

Podemos, também, pesquisar por um grupo limitado de caracteres especificando uma lista através de colchetes. Por exemplo [abc] irá somente encontrar os caracteres “a”, “b” ou “c”

[bcf]aixa” irá encontrar as seguintes palavras “baixa”, “caixa” e “faixa”

Texto[1234]” irá encontrar as seguintes palavras “Texto1”, “Texto2”, “Texto3

Também podemos especificar um intervalo de valores utilizando um hífen dentro do colchete.

[a-z]teste” irá encontrar as seguintes palavras “ateste”, “dteste”, ”oteste”, “fteste”

Bom até agora vimos como encontrar um caractere, mas se quisermos que este caractere pudesse ser repetido inúmeras vezes? Utilizaríamos um quantificador, que é um caractere que informa quantas vezes um meta caractere pode/deve ser repetido.

Quantificadores:

?: Pode se repetir 0 ou 1 vez

*: Pode se repetir uma nenhuma ou várias vezes

+: Pode se repetir uma ou várias vezes

{n,m}: Pode se repetir de n até m vezes

Agora podemos criar algumas expressões um pouco mais rebuscadas, como uma para validar placas de carros, por exemolo:

[A-Z]{3,3}-\\d{4,4}”

Temos entre colchetes duas listas que informam que só será aceito caractere de “a” até “z” maiúsculo que pode ser repetido no mínimo 3 vezes e no máximo 3 vezes. Seguido deve possuir um traço e após um caractere numérico que pode se repetir no minimo 4 vezes e no máximo 4 vezes.

Agora vamos ao código Java para validar:

1
2
3
4
5
6
7
8
9
10
11
12
13
Pattern pattern = Pattern.compile("[A-Z]{3,3}-\\d{4,4}")

Matcher matcher = pattern.matcher("ETE-1234");

if(matcher.find()){

System.out.println("Encontrou");

}else{

System.out.println("Não encontrou");

}

O objeto Matcher pode buscar várias ocorrências do padrão em sua String possuindo métodos para retornar estas ocorrências e suas posições. Veja o exemplo abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Pattern pattern = Pattern.compile("[a-zA-Z]{3,3}-\\d{4,4}");

Matcher matcher = pattern.matcher("ETE-1234 ZXC-4567 cdr-0987");

boolean b = false;

while( b = matcher.find() ){

if( b ){

System.out.println( matcher.group()+" - Posição: "+matcher.start() );

}else{

System.out.println("Não encontrou");

}

}

Você pode fazer mais alguns testes com outras expressões como:

CEP:

1
Pattern pattern = Pattern.compile(<b>"^\\d{5,5}-?\\d{3,3}$"</b>);

E-mail:

1
Pattern pattern = Pattern.compile(<b>"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE</b>);

Em Java, os parênteses são opcionais quando se usa | , eliminando a necessidade de ^ e $ para casar a String inteira. Por exemplo:

Pattern pattern = Pattern.compile(“([a-z] | [A-Z]){3}-\d{4}”);

No código acima o usuário poderá digitar letras minúsculas tanto como letras maiúsculas, existe um conjunto de instruções com o | (pipe o famoso OU), que determina que pode ser na maiúsculas de “A-Z” ou minusculas de “a-z”.

Esses são alguns exemplos que podem ser usados expressões regulares em Java.

CTA-ebook-transformação-digital

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>