Saltar al contenido

¿Cuál es el uso del método Pattern.quote?

No dudes en compartir nuestro sitio y códigos con tus amigos, necesitamos tu ayuda para aumentar nuestra comunidad.

Solución:

Q significa “comienzo de texto literal” (es decir, expresión regular “comilla abierta”)
E significa “fin del texto literal” (es decir, expresión regular “comilla de cierre”)

llamando al Pattern.quote() método envuelve el string en Q...Eque convierte el texto en una expresión regular literal. Por ejemplo, Pattern.quote(".*") coincidiría con un punto y luego un asterisco:

System.out.println("foo".matches(".*")); // true
System.out.println("foo".matches(Pattern.quote(".*"))); // false
System.out.println(".*".matches(Pattern.quote(".*"))); // true

El propósito del método es no requerir que el programador tenga que recordar los términos especiales Q y E y para agregar un poco de legibilidad al código, la expresión regular ya es lo suficientemente difícil de leer. Comparar:

someString.matches(Pattern.quote(someLiteral));
someString.matches("\Q" + someLiteral + "\E"));

Refiriéndose al javadoc:

Devuelve una cadena de patrón literal para la cadena especificada.

Este método produce una cadena que se puede usar para crear un patrón que coincida con el string s como si fuera un patrón literal.

Los metacaracteres o secuencias de escape en la secuencia de entrada no tendrán un significado especial.

los Pattern.quote El método cita parte de un patrón de expresión regular para que la expresión regular lo interprete como string literales.

Supongamos que tiene alguna entrada de usuario en su programa de búsqueda y desea expresiones regulares para ello. Pero esta entrada puede tener caracteres inseguros, por lo que puede usar

Pattern pattern = Pattern.compile(Pattern.quote(userInput));

Este método no cita un Pattern pero, como usted señala, envuelve un String en comillas regulares.

Q y E, entre todos los demás, están completamente documentados en la página java.util.regex.Pattern Javadoc. Significan “comenzar qnota”, “mind quote” y marque una región donde todos los caracteres tengan el significado literal. La forma de usar el retorno de Pattern.quote es darle de comer Pattern.compileo cualquier otro método que acepte un patrón stringtal como String.split.

Recuerda que tienes la opción de parafrasear si diste con el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *