Expressões Regulares
Visão Geral
Uma expressão regular é uma sequência de caracteres que descreve um padrão de texto. Em outras palavras, é uma regra para identificar e manipular strings.
Regras de Composição
As regras de composição estão definidas na classe java.util.regex.Pattern.
Caractrees Comuns
| Caractere | Descrição |
|---|---|
| x | O caractere x |
| \ | Caractere de barra invertida |
| \n | Nova linha (quebra de linha) ('\u000A') |
| \r | Caractere de retorno de caro ('\u000D') |
Classes de Caracteres
| Caractere | Descrição |
|---|---|
| [abc] | a, b ou c (classe simples) |
| [^abc] | Qualquer caractere, exceto a, b ou c (classe negativa) |
| [a-zA-Z] | De a a z ou A a Z, incluindo os limites (intervalo) |
| [0-9] | Qualqeur dígito de 0 a 9 |
Classes de Caracteres Predefinidas
| Caractere | Descrição |
|---|---|
| . | Qualquer caractere |
| \d | Dígito. Equivalente a [0-9] |
| \w | Caractere alfanumérico. Equivalente a [a-zA-Z_0-9] |
Delimitadores de Palavra
| Caractere | Descrição |
|---|---|
| ^ | Início da linha |
| $ | Fim da linha |
| \b | Limite de palavra |
Quantificadores
| Caractere | Descrição |
|---|---|
| X? | X, zero ou uma vez |
| X* | X, zero ou mais vezes |
| X+ | X, uma ou mais vezes |
| X{n} | X, exatamente n vezes |
| X{n,} | X, pelo menos n vezes |
| X{n,m} | X, pelo menos n vezes, mas não mais do que m vezes |
Aplicações
Verificação de Correspondência
Método matches da classe String
public boolean matches(String regex)
/**
* Verifica se o número de telefone atende aos requisitos
*/
public static void main(String[] args) {
// Entrada do número de telefone
Scanner scanner = new Scanner(System.in);
System.out.println("Digite seu número de telefone:");
String telefone = scanner.nextLine();
// Definir a regra para o número de telefone
String padrao = "1[38]\\d{9}";
// Verificar a correspondência
boolean resultado = telefone.matches(padrao);
// Exibir o resultado
System.out.println("resultado: " + resultado);
}
Divisão de Strings
Método split da classe String
public String[] split(String regex)
/**
* Divide a string com base no delimitador especificado
*/
public static void main(String[] args) {
// Definir um intervalo de idades
String faixaEtaria = "18-24";
// Definir o delimitador
String delimitador = "-";
// Dividir a string
String[] partes = faixaEtaria.split(delimitador);
int idadeInicial = Integer.parseInt(partes[0]);
int idadeFinal = Integer.parseInt(partes[1]);
}
Substituição de Texto
Método replaceAll da classe String
public String replaceAll(String regex, String substituto)
/**
* Remove todos os dígitos
*/
public static void main(String[] args) {
// Definir uma string
String texto = "helloqq12345worldkh622112345678java";
// Remover todos os dígitos
String padrao = "\\d+";
String textoLimpo = texto.replaceAll(padrao, "");
// Exibir o resultado
System.out.println(textoLimpo);
}
Extração de Substrings
Uso das classes Pattern e Matcher
/**
* Uso básico de Pattern e Matcher
*/
public static void main(String[] args) {
// Compilar a expressão regular em um objeto Pattern
Pattern pattern = Pattern.compile("a*b");
// Criar um objeto Matcher com a string a ser verificada
Matcher matcher = pattern.matcher("aaaaab");
// Verificar a correspondência
boolean corresponde = matcher.matches();
System.out.println(corresponde);
// Alternativamente, usar o método matches da classe String
String texto = "aaaaab";
String padrao = "a*b";
boolean correspondeDireto = texto.matches(padrao);
System.out.println(correspondeDireto);
}