Wyszukiwanie w programie Visual Studio: znajdowanie słowa, ale nie poprzedzone określonym słowem [duplikat]
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?
![](https://post.nghiatu.com/assets/images/s/Zj04q.gif)
Odpowiedzi
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
Wypróbuj wzór (?!<hot )dog
Objaśnienie wzoru:
(?!<hot )
- negatywne spojrzenie wstecz - stwierdź, że to, co poprzedza, nie jest hot
dog
- dopasuj dog
dosłownie
Próbny