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