Pesquisa do Visual Studio: encontrar uma palavra, mas não quando precedida por uma palavra específica [duplicado]

Jan 12 2021

Por exemplo, estou tentando localizar todas as ocorrências de "cachorro", mas não o "cachorro" em "cachorro-quente" em um arquivo de texto com a pesquisa de texto do Visual Studio. Encontrei uma pergunta semelhante e tentei a resposta aceita.

\w+(?<!hot) dog

Exclui "cachorro-quente", mas o problema é que ele corresponde a todas as combinações possíveis para outros casos. Ou seja, para "cão de caça", tenho que clicar em "Encontrar próximo" 7 vezes para passar para a próxima instância, porque o VS para para todas as partes seguintes dessa instância.

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

Além disso, não corresponde à palavra, se não for precedida por nada (a primeira palavra). Como posso mudar a expressão?

Respostas

Jossnix Jan 12 2021 at 14:43

A questão não está totalmente clara. Se você quiser encontrar a palavra "cachorro", na busca você precisa especificá-la apenas. Se você quiser encontrar a palavra anterior + cachorro, use

\b\w+\s+dog

Para excluir a palavra "quente"

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

Teste padrão (?!<hot )dog

Explicação do padrão:

(?!<hot ) - olhar para trás negativo - afirmar o que precede não hot

dog- corresponde dogliteralmente

Demo