LazowskiAnton · Extensions

RegexSmith

Wyrażenia regularne objaśniane i testowane tam, gdzie są napisane. Najedź na wzorzec w C#, a zobaczysz po jednym wierszu na każdy fragment prostymi słowami, grupy w kolorze i pasujące ciągi; wzorce, które mogą się zawiesić, są podkreślone; sprawdzaj własne przykłady w oknie Tester RegexSmith i zapisuj wzorzec z powrotem jednym kliknięciem.

Bezpłatnie · Visual Studio 2022 i 2026 · 14 języków interfejsu · bez telemetrii

Dlaczego RegexSmith

Karta po najechaniu na wzorzec [GeneratedRegex]: wzorzec z kolorowymi grupami, po wierszu na każdy fragment prostymi słowami, pasujące przykłady i jeden niepasujący oraz stan ✓ bezpieczny

Proste słowa, nie lekcja składni

^(?<year>\d{4})-(?<id>\d{1,5})$ zamienia się w „Początek tekstu”, „Liczba cyfr: dokładnie 4”, „Liczba cyfr: od 1 do 5” — po wierszu na każdy fragment, zagnieżdżone pod swoją grupą, każda grupa we własnym kolorze.

Sprawdzane prawdziwym silnikiem

Przykłady na karcie i każdy wynik w testerze pochodzą z samego silnika wyrażeń regularnych .NET, z opcjami wywołania. To, co widzisz, zrobi Twoja aplikacja.

Wzorce, które mogą się zawiesić

([a-z0-9]+\.?)+ wygląda niewinnie, a może zamrozić żądanie na długim ciągu, który prawie pasuje. RegexSmith podkreśla takie powtórzenia i naprawia je przez Ctrl+.

Bezpłatnie, bez haczyków

Bez subskrypcji, bez wersji „pro”, bez zbierania danych i bez komunikatów w oknie „Dane wyjściowe” ani przy uruchamianiu. Wzorce i przykłady zostają na Twoim komputerze. Jedyne, o co kiedykolwiek poprosimy — gdy już przez jakiś czas będziesz z niego korzystać — to ocena w Marketplace. Działa w Visual Studio 2022 i 2026, x64 i ARM64.

Funkcje

Karta po najechaniu

Najedź na ciąg wzorca, a w zwykłej etykiecie narzędzia Visual Studio pojawi się karta RegexSmith: co oznacza wzorzec, do czego pasuje i czy jest bezpieczny.

Karta po najechaniu: nagłówek z rodzajem i opcjami, wzorzec z kolorowymi grupami, po wierszu na każdy fragment zagnieżdżone pod grupami, przykłady i przycisk „Testuj wzorzec”

Gdzie działa

W plikach C#, nad wzorcem w:

Zwykłe, dosłowne (@"…") i surowe ("""…""") ciągi są odczytywane tak, jak odczytuje je kompilator, więc "\\d" i @"\d" to ten sam wzorzec.

Co pokazuje karta

Na ekranieZnaczenie
RegexSmith · Wyrażenie regularne .NET · IgnoreCaseRodzaj wzorca i opcje odczytane z wywołania, a po prawej stan.
WzorzecNawiasy każdej grupy przechwytującej w jej kolorze, zawartość podkreślona tym kolorem; tekst zachowuje kolor motywu, więc pozostaje czytelny.
Liczba cyfr: dokładnie 4Po wierszu na każdy fragment prostymi słowami — „Początek tekstu”, „Jeden z tekstów: “jpg”, “png””, „Liczba cyfr: od 1 do 5” — zagnieżdżone pod swoją grupą. Bardzo długi wzorzec kończy się wierszem … jeszcze N.
Etykiety grupNazwa lub numer każdej grupy na etykiecie w jej kolorze — w tych samych kolorach co we wzorcu i pod kodem.
✓ Pasuje: … ✗ Nie pasuje: …Dwa pasujące ciągi i jeden niepasujący, utworzone na podstawie wzorca i sprawdzone prawdziwym silnikiem .NET. Spacje są widoczne jako blade kropki.
▶ Testuj wzorzec…Otwiera wzorzec w testerze RegexSmith.

Stan

Na ekranieZnaczenie
✓ bezpieczny.NET akceptuje wzorzec i nic w nim nie może spowodować katastrofalnego nawracania.
⚠ może się zawiesićPowtórzenie może trwać wykładniczo długo na długich danych, które prawie pasują; karta podaje rodzaj problemu (RX001) i informuje, że Ctrl+. oferuje poprawki.
✕ nieprawidłowySilnik odrzuca wzorzec; karta pokazuje jego komunikat: .NET nie akceptuje tego wzorca: …

„Bezpieczny” oznacza tylko tyle: .NET akceptuje wzorzec i nie może się on zawiesić. Nie oznacza, że pasuje do tego, co zamierzasz — od tego są przykłady i tester.

Podkreślenia grup

Każda grupa przechwytująca wzorca dostaje cienką linię w swoim kolorze bezpośrednio w kodzie — w tym samym kolorze co na karcie. Długi wzorzec z pięcioma grupami można odczytać jednym spojrzeniem: która część to rok, a która identyfikator.

Grupa wewnątrz innej leży nieco niżej, więc obie linie pozostają widoczne. Kolory idą po kolei: łososiowy, zielony, niebieski, fioletowy, bursztynowy, morski — i od nowa.

Podkreślenia można wyłączyć w ustawieniach: Podkreślaj grupy przechwytywania.

Wzorce, które mogą się zawiesić

Niektóre wzorce działają wykładniczo długo na długim ciągu, który prawie pasuje — klasyczny sposób, w jaki wyrażenie regularne zamraża żądanie sieciowe. RegexSmith rozpoznaje je po kształcie i umieszcza falistą linię ostrzeżenia pod powtórzeniem; najedź na nią, aby poznać przyczynę.

Falista linia RX001 pod ([a-z0-9]+\.?)+ z otwartym menu Ctrl+. i podglądem poprawki: stary wzorzec przekreślony, nowy z grupą atomową

Co jest podkreślane (RX001)

Nie wewnątrz grup atomowych ani asercji wyprzedzających i wstecznych, i nigdy z RegexOptions.NonBacktracking — tam nie może to wystąpić.

Poprawki w Ctrl+.

Ustaw kursor na falistej linii i naciśnij Ctrl+. — każda poprawka pokazuje podgląd: wzorzec przed (przekreślony) i po.

PoprawkaCo robi
Uczyń wewnętrzne powtórzenie atomowym: (?>…)Otacza wewnętrzne powtórzenie konstrukcją (?>…). Pasują te same ciągi; powtórzenia nie da się już podzielić na wiele sposobów.
Użyj RegexOptions.NonBacktracking (.NET 7+)Dodaje opcję do wywołania. Czas liniowy dla dowolnych danych; wymaga .NET 7 lub nowszego. Oferowana tylko wtedy, gdy wzorzec na to pozwala — bez odwołań wstecznych, asercji wyprzedzających i wstecznych, grup atomowych i równoważących oraz warunków.
Testuj ten wzorzec w RegexSmithOtwiera wzorzec w testerze — oferowane nad każdym wzorcem, nie tylko ryzykownym.

RX001 można wyłączyć w ustawieniach (Wskazówki w edytorze) lub linkiem Nie pokazuj tego rodzaju wskazówek w jego etykietce; poprawki w Ctrl+. zostają.

Tester

Tester RegexSmith otwiera się zadokowany obok okna „Wyniki wyszukiwania”. Wzorzec pochodzi z kodu i pozostaje z nim połączony: wypróbuj go na własnych przykładach, zmień i zapisz z powrotem.

Tester RegexSmith: link do źródła, wzorzec, wiersz stanu, przełączniki opcji, przykłady z oczekiwaniami i wyróżnionymi grupami, błędny wiersz na czerwono, tabela grup i przyciski

Jak otworzyć

Wzorzec i jego opcje

U góry plik i wiersz wzorca — kliknij, aby tam przejść. Poniżej pole wzorca, wiersz stanu (✓ bezpieczny, ⚠ może się zawiesić lub błąd silnika, a potem N z M zgodnie z oczekiwaniami · ms) i przełączniki opcji: IgnoreCase, Multiline, Singleline, IgnorePatternWhitespace, ExplicitCapture, RightToLeft, CultureInvariant. Każda zmiana od razu uruchamia sprawdzanie ponownie.

Przykłady i oczekiwania

Za pierwszym razem są tam przykłady z karty: dwa, które powinny pasować, i jeden, który nie powinien. Wpisz nowy w polu Dodaj przykład i naciśnij Enter…; kliknij przykład, aby go edytować, ✕ go usuwa. Znak przed każdym przykładem mówi, co powinien robić — kliknij go, aby zmienić:

Na ekranieZnaczenie
✓ma pasować
✗nie ma pasować
–bez oczekiwań, tylko pokaż

Przykład, który zachowuje się odwrotnie, robi się czerwony — ✗ pasuje lub ✗ nie pasuje — dzięki czemu przykłady stają się małą specyfikacją wzorca. Dopasowania są zabarwione, grupy podkreślone w swoich kolorach, spacje pokazane jako kropki. Sprawdzanie trwające dłużej niż 1 sekundę zatrzymuje się z komunikatem ⏱ zbyt wolno.

Grupy wybranego przykładu wymienia każde dopasowanie wybranego przykładu: całe dopasowanie, a potem każdą grupę z jej wartością i pozycją (nie przechwycono, gdy grupa nie brała udziału).

Zamiana

Karta Zamiana dodaje pole zamiany — $1, ${name}, $$ dla $ — i pokazuje wynik dla każdego przykładu tak, jak zrobiłby to Regex.Replace.

Kopiuj, przywróć, zastosuj

Kopiuj jako test jednostkowy umieszcza w schowku test z Twoimi przykładami dla xUnit, NUnit lub MSTest — specyfikacja przenosi się do projektu testowego.

Przywróć wraca do wzorca i opcji z kodu; przykłady zostają.

Zastosuj w kodzie zapisuje wzorzec z powrotem jako literał tego samego rodzaju, jakim był (zwykły, dosłowny lub surowy), razem z opcjami — jedno Cofnij wycofuje zmianę. Jeśli ten kod zmienił się po otwarciu go w testerze, nic nie jest zapisywane: otwórz tester z wzorca ponownie.

Przykłady są zapamiętywane dla każdego wzorca i każdego rozwiązania w %LocalAppData%\RegexSmith\samples, więc następnym razem już tam są. Nic nie trafia do repozytorium.

Ustawienia

Narzędzia › Opcje › SmithWorks › RegexSmith. Każda opcja ma krótki opis tego, co robi.

OpcjaDomyślnie
Objaśniaj wzorce po najechaniuwł.
Podkreślaj grupy przechwytywaniawł.
RX001 Katastrofalne nawracaniewł.
Proś o ocenę w Marketplacewł.

Na dole: Przywróć domyślne, Dokumentacja, Oceń w Marketplace i Wyślij opinię.

Ustawienia są przechowywane w %LocalAppData%\RegexSmith.

Strona opcji RegexSmith
Strona opcji.

FAQ

Czy RegexSmith wysyła jakiekolwiek dane?

Nie. Wzorce są odczytywane z otwartego dokumentu i uruchamiane na Twoim komputerze; przykłady są przechowywane w %LocalAppData%\RegexSmith. Bez żądań sieciowych, bez telemetrii.

Karta pisze „✓ bezpieczny”. Czy wzorzec jest poprawny?

Niekoniecznie. „Bezpieczny” oznacza, że .NET akceptuje wzorzec i żadne powtórzenie w nim nie może spowodować katastrofalnego nawracania. Czy pasuje do tego, co zamierzasz, mają pokazać przykłady: oznacz je ✓ lub ✗ w testerze.

Dlaczego nad moim wzorcem nie ma karty?

Karta pojawia się nad literałem ciągu, o którym RegexSmith wie, że jest wzorcem: argumentem new Regex, statycznej metody Regex, [GeneratedRegex] lub [RegularExpression] albo stałą z tego samego pliku używaną w tych miejscach. Wzorca budowanego w czasie wykonania (sklejanego, odczytywanego z ustawień) nie da się odczytać. Sprawdź też opcję Objaśniaj wzorce po najechaniu w ustawieniach.

Który silnik wyrażeń regularnych jest używany?

Silnik wyrażeń regularnych .NET, na którym działa samo Visual Studio, z opcjami wywołania. RegexOptions.NonBacktracking (.NET 7+) też jest odczytywane z wywołania; przykłady są wtedy uruchamiane na zwykłym silniku, a pasują te same ciągi w obu przypadkach.

„Zastosuj w kodzie” nic nie zrobiło.

Kod wzorca zmienił się po otwarciu go w testerze, więc RegexSmith nie zapisuje w miejscu, w którym wzorca może już nie być — tester informuje o tym pod przyciskami. Otwórz tester z wzorca ponownie. Gdy w kodzie nie ma miejsca na opcje ([RegularExpression] ich nie przyjmuje), wzorzec zostaje zapisany, a opcje nie.

Czy działa w VB.NET, JavaScript lub TypeScript?

Nie w wersji 1.0: tylko C#. Inne języki używają innych silników; jeśli potrzebujesz któregoś z nich, napisz w repozytorium Feedback.

Gdzie zgłosić problem lub zaproponować funkcję?

Otwórz zgłoszenie w repozytorium Feedback na GitHubie — są tam formularze dla błędów i pomysłów (prosimy zmienić prywatne nazwy). Możesz też skorzystać z karty Q&A w Marketplace.

Historia zmian

1.0.1

1.0.0