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 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 como subcadenas .
Úselo 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).*\bstores\b.*\bstore\b.*\bproduct\b.*
Los \b
cheques de límite de palabra, por lo que no se obtiene 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 carácter excepto con un número de caracteres de nueva línea . (?s)
al principio hace .
coincidir con cualquier personaje sin excepción (gracias a Tim Pietzcker por señalar esto).
(?s)
al inicio de su expresión regular en caso de que la cadena contenga nuevas líneas.\\b
\
para especificar un solo\
, por\\b
lo que se interpretará como\b
, como se ve en la expresión regular RAW.\b
coincide con el límite de la palabra, como se explicó anteriormente.matcher.find()
hace lo que necesita. Ejemplo:fuente
Simplemente puede usar el
matches
método de la clase String.fuente
.*
o solo coincidirá con las cadenas que comiencen constores
.Si desea verificar si una cadena contiene subcadena o no usa regex, lo más cercano que puede hacer es usar find () -
Tenga en cuenta la diferencia entre coincidencias () y buscar (), coincidencias () devuelven verdadero si toda la cadena coincide con el patrón dado. find () intenta encontrar una subcadena que coincida con el patrón en una cadena de entrada dada. Además, al usar find () no tiene que agregar coincidencias adicionales como - (? S). * Al principio y. * Al final de su patrón de expresiones regulares.
fuente
1.resultado: verdadero
2.resultado: verdadero
fuente
fromIndex
se ignora, ¿no?contains("something", test, 5) => true