Regex palabra entera
Me siento un poco tonta haciendo esta pregunta, pero de todo lo que he leído, esto debería funcionar y no, para mí. Estoy intentando emparejar una palabra entera en una cadena usando expresiones regulares.
Por lo tanto, si estoy tratando de encontrar la palabra "el" en una frase, debe devolver verdadero para "el zorro marrón rápido salta sobre el perro perezoso", pero devuelve falso para "allí rápido zorro marrón salta sobre el perro perezoso" .
- ¿Cómo busco una lista de correo electrónico para un formato determinado?
- Android, String.split (String regex) no divide toda la cadena
- Grupos java regex con android
- Android reemplazar con regex
- ¿Hay una manera rápida de reconocer códigos HTML ASCII en una cadena o TextView?
He intentado esto:
String text = "the quick brown fox jumps over the lazy dog"; return text.matches("\\bthe\\b");
También he intentado:
String text = "the quick brown fox jumps over the lazy dog"; String regex = "\\bthe\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); return matcher.matches();
También he intentado esta regex: "\ bthe \ b"
Y siempre vuelven falsas. Siento que estoy perdiendo algo bastante obvio aquí, ya que esto no debería ser demasiado difícil. 🙂
- ¿Cómo puedo eliminar la cadena de caracteres dinámicos de una cadena?
- Diferencia de regex de Java y Android
- ¿Cuál sería una simple expresión regular para la comprobación de contraseña durante la suscripción?
- La división de una cadena funciona en Java, no funciona en Android
- Caracteres especiales de Android Sqlite
- ¿Qué significa * + en regexp
- Identificar el tipo de patrón de regex
- Android enlaza sin primer carácter
Lo que necesita es matcher.find ()
http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html#find%28%29
Si utiliza matches
, debe coincidir con toda la cadena. String#contains(...)
puede ser lo que estás buscando, o tal vez quieras poner algunos comodines antes y después de tu palabra:
String regex = ".*\\bthe\\b.*";
p.ej,
String text = "the quick brown fox jumps over the lazy dog"; System.out.println(text.matches(regex));
Pruebe esta regex:
".*\\bthe\\b.*"
Básicamente, lo que está tratando de igualar es la cadena "el", pero es necesario devolver un partido, incluso si la entrada tiene otras cosas, por lo que necesita poner ". *" En ambos lados para eso.
Bzzt! Naturalmente volverá a ser true
para la segunda oración, ya que la palabra the
aparece dos veces: El zorro marrón rápido salta sobre el perro perezoso. "Su segunda oración todavía tiene el segundo.
Su regex es correcta. Sin embargo, necesitará utilizar el método Pattern.find
lugar de matches
, ya que los matches
coinciden con la cadena completa. Pattern.find
, por otro lado, localizará las subcadenas que coincidan con su patrón.