Regex w Visual Studio - lazy mode

23 lutego 2009 19:14 w kategorii: pro

Bardzo przydatną funkcjonalnością w Visual Studio jest wyszukiwanie z wykorzystaniem wyrażeń regularnych:

Przyzwyczajeni do .NETowej składni języka możemy natknąć się na pewien problem. Otóż standardowy tryb działania tego silnika w VS (jak i chyba wszystkich popularnych silników regex?) to tryb zachłanny, czyli "greedy". Polega on na dopasowaniu tekstu o maksymalnej długości. Składnią służącą do jego uzyskania jest gwiazdka *, tak samo jak w standardowych regexach. Jeżeli jednak napotkamy potrzebę użycia trybu "lazy", czyli znalezienie minimalnego tekstu dopasowującego się do wzorca, z przyzwyczajenia możemy użyć wyrażenia *?, jak ma to miejsce w wyrażeniach .NETowych. I tu czeka nas niespodzianka, ponieważ podane wyrażenie nam nie zadziała. Kiedyś założyłem, że zmuszenie VS do "leniwego" wyszukiwania jest po prostu niemożliwe. Niedawno jednak zacząłem zgłębiać temat i okazało sie, że cały czas miałem rozwiązanie przez oczami... Po zauważeniu opcji w menu:

wszystko stało się jasne. Leniwy odpowiednik * to @, leniwy odpowiednik + to #. Więcej w MSDN: Regular Expressions (Visual Studio).


Komentarze

Marcin Ż.

25 lutego 2009 04:11

Nawet Tobie, staremu resharperowcowi zdarza sie korzystac z "Find in Files..."? ;)

Procent

25 lutego 2009 04:29

Niestety czasami trzeba:). Z różnych względów... jednym z nich jest niestety bug w R# w funkcjonalności "Find all usages" - kilka razy zdarzyło mi się, że nie wskazał mi nawet tak banalnego przypadku jak wywołanie własnej prywatnej metody zawarttej w tym samym pliku. Od tamtej pory przestałem bezgranicznie ufać JetBrains i zanim zmodyfikuję coś dużego - wolę upewnić się takim właśnie brute forcem:)

Dodaj komentarz




biuquotecode