Próbując zastąpić wyszukiwanie w programie Visual Studio Code, stwierdzam, że jego smak Regex różni się od pełnego programu Visual Studio. W szczególności próbuję zadeklarować nazwaną grupę, z string (?<p>[\w]+)
którą działa w programie Visual Studio, ale nie w Visual Studio Code. Będzie narzekać z błędem Invalid group
.
Oprócz rozwiązania tego konkretnego problemu szukam informacji na temat smaku Regexes w Visual Studio Code i gdzie znaleźć dokumentację na ten temat, aby móc odpowiedzieć sobie na inne pytania, na które mogę się natknąć.
W pełnym programie Visual Studio używane są wyrażenia regularne platformy .NET, jak opisano tutaj . Ten link jest wymieniony jako dokumentacja dla VS Code w innym miejscu w Stackoverflow, ale tak nie jest.
[^]
wzorzec jako pasujący do dowolnego symbolu. Jest więc jasne, że jest to silnik JS regex.Odpowiedzi:
Rust Regex na pasku bocznym Znajdź / zamień w plikach
Rob Lourens z MSFT napisał, że wyszukiwanie plików używa wyrażenia regularnego Rust. Dokumentacja języka Rust opisuje składnię.
JavaScript Regex w widżecie Znajdź / zamień w pliku
Alexandru Dima z MSFT napisał, że widget wyszukiwania używa wyrażenia regularnego JavaScript. Jak skomentował Wicktor, dokumentacja ECMAScript 5 opisuje składnię. Podobnie jest z Przewodnikiem po wyrażeniach regularnych JavaScript w MDN .
Sprawdź różnicę
Pasek boczny znajdowania w plikach nie obsługuje,
(?=foobar)
podczas gdy widżet znajdowania w pliku obsługuje tę składnię wyszukiwania w przód.Odnośnie Znajdź / Zamień grupami
Aby znaleźć / zastąpić grupami, użyj nawiasów
()
do grupowania i$1
,$2
,$3
,$n
aby zastąpić.Oto przykład.
Przed:
Po:
źródło
Odpowiedź Shauna jest nadal poprawna, jednak aby dodać aktualizację, ostatnio VS Code dodał opcję wyrażenia zgody na używanie silnika PCRE2 opartego na Perlu . Możesz to włączyć za pomocą konfiguracji ustawień.
Pozwala to na wykonywanie bardziej zaawansowanych operacji regex, takich jak lookaheads i backreferences . Ale jak zauważono poniżej, wyrażenie regularne nadal musi być poprawnym wyrażeniem regularnym JavaScript .
A na bonus, jeśli wylądowałeś tutaj, próbując wyszukiwać w wielu wierszach, VS Code niedawno dodał tę funkcję !
źródło