Negative Lookaround Regex - Nur ein Vorkommen - Java

Ich versuche herauszufinden, ob eine Zeichenfolge enthälteinziger Vorkommen eines Wortes,

z.B.

String : `jjdhfoobarfoo` , Regex : `foo` --> false

String : `wewwfobarfoo` , Regex : `foo` --> true

String : `jjfffoobarfo` , Regex : `foo` --> true

mehrerefoo's kann irgendwo in der Zeichenkette vorkommen, sie können also nicht aufeinanderfolgend sein,

Ich teste den folgenden Regex-Matching in Java mit Stringfoobarfoo, aber es funktioniert nicht und es kehrt zurückwahr :

static boolean testRegEx(String str){
    return str.matches(".*(foo)(?!.*foo).*");
}

Ich weiß, dass dieses Thema doppelt erscheinen mag, aber ich bin überrascht, wenn ich diesen regulären Ausdruck verwende:(foo)(?!.*foo).* Es klappt !

Irgendeine Idee, warum das passiert?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage