Ricerca in Visual Studio: trovare una parola, ma non quando è preceduta da una parola specifica [duplicato]

Jan 12 2021

Ad esempio, sto cercando di trovare tutte le istanze di "cane", ma non il "cane" in "hot dog" in un file di testo con la ricerca di testo di Visual Studio. Ho trovato una domanda simile e ho provato la sua risposta accettata.

\w+(?<!hot) dog

Esclude "hot dog", ma il problema è che corrisponde a tutte le possibili combinazioni per altri casi. Cioè, per "cane da caccia", devo fare clic su "Trova successivo" 7 volte per passare all'istanza successiva, perché VS si interrompe per tutte le parti seguenti di quell'istanza.

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

Inoltre, non corrisponde alla parola, se non è preceduta da nulla (la prima parola). Come posso cambiare l'espressione?

Risposte

Jossnix Jan 12 2021 at 14:43

La domanda non è del tutto chiara. Se vuoi trovare la parola "cane", nella ricerca devi specificarla solo. Se vuoi trovare la parola precedente + cane, usa

\b\w+\s+dog

Per escludere la parola "caldo"

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

Prova il pattern (?!<hot )dog

Spiegazione del modello:

(?!<hot ) - lookbehind negativo - asserisci ciò che precede non lo è hot

dog- abbinare dogletteralmente

Demo