Aspectos negativos de la expresión regular: solo una aparición - Java
Estoy tratando de encontrar si una cadena contienesolo uno aparición de una palabra,
p.ej.
String : `jjdhfoobarfoo` , Regex : `foo` --> false
String : `wewwfobarfoo` , Regex : `foo` --> true
String : `jjfffoobarfo` , Regex : `foo` --> true
múltiplefoo
's puede ocurrir en cualquier parte de la cadena, por lo que pueden ser no consecutivos,
Pruebo la siguiente expresión regular de expresiones regulares en java con cadenafoobarfoo
, pero no funciona y vuelvecierto :
static boolean testRegEx(String str){
return str.matches(".*(foo)(?!.*foo).*");
}
Sé que este tema puede parecer duplicado, pero me sorprende porque cuando uso esta expresión regular:(foo)(?!.*foo).*
funciona !
¿Alguna idea de por qué sucede esto?