Ricerca in Visual Studio: trovare una parola, ma non quando è preceduta da una parola specifica [duplicato]
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
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
Prova il pattern (?!<hot )dog
Spiegazione del modello:
(?!<hot )
- lookbehind negativo - asserisci ciò che precede non lo è hot
dog
- abbinare dog
letteralmente
Demo