pattern online example ejemplo java regex reset matcher

online - Java Pattern Matcher: crear nuevo o restablecer?



regex java 8 (1)

Por todos los medios reutilizar el Matcher . La única buena razón para crear un nuevo Matcher es garantizar la seguridad de subprocesos. Es por eso que no crea un public static Matcher m ; de hecho, esa es la razón por la que, en primer lugar, existe un objeto de fábrica de Pattern separado y seguro para subprocesos.

En cada situación en la que esté seguro de que solo hay un usuario de Matcher en cualquier momento, está bien reutilizarlo con el reset .

Supongamos una Regular Expression , que, a través de un objeto de Java Matcher , se compara con un gran número de cadenas:

String expression = ...; // The Regular Expression Pattern pattern = Pattern.compile(expression); String[] ALL_INPUT = ...; // The large number of strings to be matched Matcher matcher; // Declare but not initialize a Matcher for (String input:ALL_INPUT) { matcher = pattern.matcher(input); // Create a new Matcher if (matcher.matches()) // Or whatever other matcher check { // Whatever processing } }

En el Java SE 6 JavaDoc for Matcher , uno encuentra la opción de reutilizar el mismo objeto Matcher , a través del método reset(CharSequence) , que, como muestra el código fuente, es un poco menos costoso que crear un nuevo Matcher cada vez, es decir , a diferencia de lo anterior, uno podría hacer:

String expression = ...; // The Regular Expression Pattern pattern = Pattern.compile(expression); String[] ALL_INPUT = ...; // The large number of strings to be matched Matcher matcher = pattern.matcher(""); // Declare and initialize a matcher for (String input:ALL_INPUT) { matcher.reset(input); // Reuse the same matcher if (matcher.matches()) // Or whatever other matcher check { // Whatever processing } }

¿Debería uno usar el patrón de reset(CharSequence) anterior, o debería preferir inicializar un nuevo objeto Matcher cada vez?