"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como funciona a captura de grupos em expressões regulares Java?

Como funciona a captura de grupos em expressões regulares Java?

Publicado em 17/11/2024
Navegar:421

How do Capturing Groups Work in Java Regular Expressions?

Compreendendo grupos de captura de Java Regex

Neste trecho de código, usamos a biblioteca de expressões regulares (regex) do Java para extrair partes de uma string. O regex é definido como "(.)(\d )(.)", onde:

  • (.*): Corresponde a qualquer número de caracteres antes do próximo grupo .
  • (\d ): Corresponde a qualquer número de dígitos após o grupo anterior.
  • (.*): Corresponde a qualquer número de caracteres após o anterior group.

Execução Regex

Quando a regex é executada na string "Este pedido foi feito para QT3000! OK?", ele produz os seguintes resultados :

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Compreendendo os quantificadores gananciosos

O quantificador padrão usado na regex é ganancioso, o que significa que ele corresponde a tantos caracteres quanto possível para satisfazer o próximo grupo. Nesse caso, ".*" corresponde à string inteira até que o primeiro dígito seja encontrado, não deixando nenhum caractere para o terceiro grupo.

Usando quantificadores relutantes

Para corresponder apenas os caracteres necessários, podemos usar um quantificador relutante, indicado por um ponto de interrogação. Substituir "(.)" por "(.?)" corresponde ao menor número de caracteres possível, resultando na seguinte saída:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Vantagens de capturar grupos

A captura de grupos nos permite extrair partes específicas de uma string correspondente para uso posterior. Neste exemplo, podemos acessar o valor correspondente de cada grupo através do método "group()" do objeto "Matcher", conforme demonstrado no trecho de código abaixo:

Pattern pattern = Pattern.compile("(.*?)(\\d )(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: "   matcher.group(1));
    System.out.println("group 2: "   matcher.group(2));
    System.out.println("group 3: "   matcher.group(3));
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3