Empecé a usar el método .match(Regex)
en mi programa java, pero por ahora solo estoy usando una cadena (String regexString = new String("[^a-zA-Z0-9][^a-zA-Z0-9]*");
que es lo que tengo hasta ahora, como ejemplo). Sin embargo, sé que puedo usar una expresión regular real (Regex pattern = new Regex() & the Pattern class
) y luego compilarla (?) De alguna forma).¿Regex con una cuerda o no regex con una cuerda?
¿Existe alguna ventaja al usar Regex como clase y no solo como cadena, en java? Estoy bastante acostumbrado a bash scripting y los regex son solo 'cuerdas' en el sentido más absoluto, y no hay capacidad/necesidad para una clase separada, así que estoy luchando por ver dónde hay uno aquí.
Nunca escriba 'new String (" ... ");'. Simplemente use '" ... "' en su lugar: 'String regexString =". * ";'. Es innecesario e ineficiente crear explícitamente un nuevo objeto 'String'. – Jesper
¿No se crea un objeto cada vez que hago eso? ¿Qué pasa si tengo varias cadenas separadas? – Pureferret
Sí, si solo usa un literal, por ejemplo '". * "', Se crea un objeto 'String'. Pero si lo hace 'new String (". * ")', Se crea un segundo objeto 'String' que copia el contenido de la cadena literal, lo cual es innecesario. Las cadenas son inmutables en Java. Java tiene un mecanismo de agrupación de cadenas, por lo que si utiliza el mismo literal de cadena varias veces, solo se compartirá un objeto 'String'. – Jesper