Regex w Visual Studio – lazy mode

2

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).

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

2 Comments

  1. Marcin Ż. on

    Nawet Tobie, staremu resharperowcowi zdarza sie korzystac z “Find in Files…”? ;)

  2. 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:)