Вы должны переместить вторую .*
в поле зрения, например,
^.*\bfrost(?!.*(?:flakes|snowman)).*$
или
^.*\bfrost(?!.*flakes|.*snowman).*$
См. Демонстрационную версию regex
В исходном регулярном выражении указатель находится после .*
, и всякий раз, когда указатель возвращает ложь, механизм регулярных выражений может возвращать и по-прежнему сопоставлять строку другим способом, местоположение, за которым сразу не следует snowman
или flakes
.Когда вы вводите .*
в поле зрения, эти два слова не обязательно должны появляться сразу справа от текущего местоположения.