Regex de Lookaround Negativo - Apenas uma ocorrência - Java

Eu estou tentando descobrir se uma string contémapenas um ocorrência de uma palavra,

por exemplo.

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

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

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

múltiplofoopodem acontecer em qualquer lugar da string, então eles podem ser não consecutivos,

Eu testo o seguinte regex correspondente em java com stringfoobarfoo, mas não funciona e retornaverdade :

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

Eu sei que este tópico pode parecer duplicado, mas estou surpreso porque quando eu uso este regex:(foo)(?!.*foo).* funciona !

Alguma ideia de por que isso acontece?

questionAnswers(5)

yourAnswerToTheQuestion