que pattern online number example java regex find matcher

pattern - Recuento de coincidencias de java regex



matcher que es (3)

Digamos que tengo un archivo y el archivo contiene esto:

HelloxxxHelloxxxHello

Recopilo un patrón para buscar ''Hola''

Pattern pattern = Pattern.compile("Hello");

Luego utilizo un inputstream para leer en el archivo y convertirlo en una cadena para que pueda ser regex.

Una vez que el emparejador encuentra una coincidencia en el archivo, lo indica, pero no me dice cuántas coincidencias encontró; simplemente que encontró una coincidencia dentro de la Cadena.

Entonces, como la cadena es relativamente corta, y el buffer que estoy usando tiene 200 bytes, debería encontrar tres coincidencias. Sin embargo, simplemente dice coincidencia, y no me da un recuento de cuántas coincidencias hubo.

¿Cuál es la manera más fácil de contar la cantidad de coincidencias que se produjeron dentro de la Cadena? He intentado varios bucles for y uso el matcher.groupCount () pero no llego rápido a ninguna parte.


Esto debería funcionar para las coincidencias no disjuntos:

public static void main(String[] args) { String input = "aaaaaaaa"; String regex = "aa"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); int from = 0; int count = 0; while(matcher.find(from)) { count++; from = matcher.start() + 1; } System.out.println(count); }


Esto puede ayudar:

public static void main(String[] args) { String hello = "HelloxxxHelloxxxHello"; String []matches = hello.split("Hello"); System.out.println(matches.length); // prints 3 }


matcher.find() no encuentra todas las coincidencias, solo la siguiente coincidencia.

Tendrás que hacer lo siguiente:

int count = 0; while (matcher.find()) count++;

Por matcher.groupCount() , matcher.groupCount() es algo completamente diferente.

Ejemplo completo :

import java.util.regex.*; class Test { public static void main(String[] args) { String hello = "HelloxxxHelloxxxHello"; Pattern pattern = Pattern.compile("Hello"); Matcher matcher = pattern.matcher(hello); int count = 0; while (matcher.find()) count++; System.out.println(count); // prints 3 } }