Expressões Regulares em Java

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);
}

Tags: java Expressões Regulares Pattern Matcher string manipulation

Publicado em 9-7 15:11