Wyszukiwanie w programie Visual Studio: znajdowanie słowa, ale nie poprzedzone określonym słowem [duplikat]

Jan 12 2021

Na przykład próbuję znaleźć wszystkie wystąpienia „pies”, ale nie „pies” w „hot dog” w pliku tekstowym za pomocą funkcji wyszukiwania tekstowego programu Visual Studio. Znalazłem podobne pytanie i wypróbowałem zaakceptowaną odpowiedź.

\w+(?<!hot) dog

Nie wyklucza „hot doga”, ale problem polega na tym, że pasuje do wszystkich możliwych kombinacji w innych przypadkach. Oznacza to, że w przypadku „psa myśliwskiego” muszę kliknąć „Znajdź następny” 7 razy, aby przejść do następnej instancji, ponieważ VS zatrzymuje się dla wszystkich kolejnych części tej jednej instancji.

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

Nie pasuje również do słowa, jeśli nie jest poprzedzone niczym (pierwsze słowo). Jak mogę zmienić wyrażenie?

Odpowiedzi

Jossnix Jan 12 2021 at 14:43

Pytanie nie jest do końca jasne. Jeśli chcesz znaleźć słowo „pies”, to w wyszukiwaniu musisz podać tylko to. Jeśli chcesz znaleźć poprzednie słowo + pies, użyj

\b\w+\s+dog

Aby wykluczyć słowo „gorący”

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

Wypróbuj wzór (?!<hot )dog

Objaśnienie wzoru:

(?!<hot ) - negatywne spojrzenie wstecz - stwierdź, że to, co poprzedza, nie jest hot

dog- dopasuj dogdosłownie

Próbny