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

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

например

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

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

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

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

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

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

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

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

Ответы на вопрос(5)

Ваш ответ на вопрос