Поиск Visual Studio: поиск слова, но не в том случае, если ему предшествует определенное слово [дубликат]

Jan 12 2021

Например, я пытаюсь найти все вхождения «dog», но не «dog» в «хот-дог» в текстовом файле с помощью текстового поиска Visual Studio. Я нашел аналогичный вопрос и попробовал его принятый ответ.

\w+(?<!hot) dog

Он исключает «хот-дог», но проблема в том, что он соответствует всем возможным комбинациям для других случаев. То есть для «охотничьей собаки» мне нужно 7 раз нажать «Найти далее», чтобы перейти к следующему экземпляру, потому что VS останавливается для всех следующих частей этого экземпляра.

hunting dog
unting dog
nting dog
ting dog
ing dog
ng dog
g dog

Также он не соответствует слову, если ему ничего не предшествует (первое слово). Как мне изменить выражение?

Ответы

Jossnix Jan 12 2021 at 14:43

Вопрос не совсем ясен. Если вы хотите найти слово «собака», то в поиске нужно указать только его. Если вы хотите найти предыдущее слово + собака, используйте

\b\w+\s+dog

Исключить слово «горячий»

(?<!hot )\bdog
MichałTurczyn Jan 12 2021 at 14:54

Попробуйте шаблон (?!<hot )dog

Объяснение рисунка:

(?!<hot ) - отрицательный взгляд назад - утверждать, что предшествующее не является hot

dog- dogбуквально совпадать

Демо