Saltar al contenido

Cómo usar expresiones regulares en el método String.contains () en Java

Solución:

String.contains

String.contains funciona con String, punto. No funciona con expresiones regulares. Verificará si la Cadena exacta especificada aparece en la Cadena actual o no.

Tenga en cuenta que String.contains no comprueba el límite de las palabras; simplemente busca una subcadena.

Solución Regex

Regex es más poderoso que String.contains, ya que puede hacer cumplir el límite de palabras en las palabras clave (entre otras cosas). Esto significa que puede buscar las palabras clave como palabras, en lugar de solo subcadenas.

Usar String.matches con la siguiente expresión regular:

"(?s).*\bstores\b.*\bstore\b.*\bproduct\b.*"

La expresión regular RAW (elimine el escape realizado en el literal de cadena; esto es lo que obtiene cuando imprime la cadena de arriba):

(?s).*bstoresb.*bstoreb.*bproductb.*

los b comprueba el límite de palabras, de modo que no obtenga una coincidencia para restores store products. Tenga en cuenta que stores 3store_product también se rechaza, ya que dígito y _ se consideran parte de una palabra, pero dudo que este caso aparezca en texto natural.

Dado que el límite de palabras está marcado para ambos lados, la expresión regular de arriba buscará palabras exactas. En otras palabras, stores stores product no coincidirá con la expresión regular anterior, ya que está buscando la palabra store sin s.

. normalmente coincide con cualquier personaje excepto varios caracteres de nueva línea. (?s) al principio hace . coincide con cualquier carácter sin excepción (gracias a Tim Pietzcker por señalar esto).

matcher.find() hace lo que necesita. Ejemplo:

Pattern.compile("stores.*store.*product").matcher(someString).find();

Simplemente puede usar matches método de la clase String.

boolean result = someString.matches("stores.*store.*product.*");
¡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 *