Negative Lookaround Regex - только один случай - Java

Я пытаюсь найти, содержит ли строкаединственный вхождение слова,

например

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

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

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

множественныйfooможет произойти где угодно в строке, поэтому они могут быть непоследовательными,

Я проверяю следующее соответствие регулярных выражений в Java со строкойfoobarfoo, но это не работает и возвращаетсяправда :

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

Я знаю, что эта тема может показаться дубликатом, но я удивлен, потому что, когда я использую это регулярное выражение:(foo)(?!.*foo).* оно работает !

Есть идеи, почему это происходит?