Поиск Visual Studio: поиск слова, но не в том случае, если ему предшествует определенное слово [дубликат]
Например, я пытаюсь найти все вхождения «dog», но не «dog» в «хот-дог» в текстовом файле с помощью текстового поиска Visual Studio. Я нашел аналогичный вопрос и попробовал его принятый ответ.
\w+(?<!hot) dog
Он исключает «хот-дог», но проблема в том, что он соответствует всем возможным комбинациям для других случаев. То есть для «охотничьей собаки» мне нужно 7 раз нажать «Найти далее», чтобы перейти к следующему экземпляру, потому что VS останавливается для всех следующих частей этого экземпляра.
hunting dog
unting dog
nting dog
ting dog
ing dog
ng dog
g dog
Также он не соответствует слову, если ему ничего не предшествует (первое слово). Как мне изменить выражение?
Ответы
Вопрос не совсем ясен. Если вы хотите найти слово «собака», то в поиске нужно указать только его. Если вы хотите найти предыдущее слово + собака, используйте
\b\w+\s+dog
Исключить слово «горячий»
(?<!hot )\bdog
Попробуйте шаблон (?!<hot )dog
Объяснение рисунка:
(?!<hot )
- отрицательный взгляд назад - утверждать, что предшествующее не является hot
dog
- dog
буквально совпадать
Демо