LazowskiAnton · Extensions

RegexSmith

Regulární výrazy vysvětlené a otestované přímo tam, kde je píšete. Najeďte myší na vzor v C# a uvidíte řádek srozumitelnými slovy pro každou jeho část, skupiny v barvách a řetězce, které odpovídají; vzory, které mohou zamrznout, jsou podtržené; vlastní příklady vyzkoušíte v okně Tester RegexSmith a vzor jedním kliknutím zapíšete zpět.

Zdarma · Visual Studio 2022 a 2026 · 14 jazyků rozhraní · žádná telemetrie

Proč RegexSmith

Karta nad vzorem [GeneratedRegex]: vzor s barevnými skupinami, řádek srozumitelnými slovy pro každou část, příklady, které odpovídají, a jeden, který ne, a stav ✓ bezpečný

Srozumitelná slova, ne lekce syntaxe

Z ^(?<year>\d{4})-(?<id>\d{1,5})$ se stane „Začátek textu“, „Počet číslic: přesně 4“, „Počet číslic: 1 až 5“ — jeden řádek pro každou část, vnořený pod svou skupinu, každá skupina ve vlastní barvě.

Ověřeno skutečným enginem

Příklady na kartě i každý výsledek v testeru pocházejí přímo z enginu regulárních výrazů .NET, s možnostmi daného volání. Co vidíte, to udělá i vaše aplikace.

Vzory, které mohou zamrznout

([a-z0-9]+\.?)+ vypadá neškodně, a přesto může na dlouhém řetězci, který téměř odpovídá, zablokovat požadavek. RegexSmith taková opakování podtrhne a opraví je přes Ctrl+.

Zdarma a bez háčků

Žádné předplatné, žádná verze „pro“, žádný sběr dat a žádné zprávy v okně „Výstup“ ani při spuštění. Vzory a příklady zůstávají ve vašem počítači. Jediné, o co kdy požádáme — až ho nějakou dobu budete používat — je hodnocení na Marketplace. Funguje ve Visual Studiu 2022 a 2026, x64 i ARM64.

Funkce

Karta při najetí myší

Najeďte myší na řetězec vzoru a běžný popisek Visual Studia dostane kartu RegexSmith: co vzor znamená, čemu odpovídá a zda je bezpečný.

Karta při najetí myší: záhlaví s druhem a možnostmi, vzor s barevnými skupinami, řádek pro každou část vnořený pod skupinami, příklady a tlačítko Otestovat vzor

Kde funguje

V souborech C# nad vzorem v:

Běžné, doslovné (@"…") i surové ("""…""") řetězce se čtou tak, jak je čte kompilátor, takže "\\d" a @"\d" jsou tentýž vzor.

Co karta ukazuje

Na obrazovceVýznam
RegexSmith · Regulární výraz .NET · IgnoreCaseDruh vzoru a možnosti přečtené z volání, vpravo stav.
VzorZávorky každé zachytávací skupiny v její barvě, její obsah podtržený touto barvou; text si ponechává barvu motivu, takže zůstává čitelný.
Počet číslic: přesně 4Řádek srozumitelnými slovy pro každou část — „Začátek textu“, „Jeden z textů: ‚jpg‘, ‚png‘“, „Počet číslic: 1 až 5“ — vnořený pod svou skupinu. Velmi dlouhý vzor končí řádkem … další: N.
Štítky skupinNázev nebo číslo každé skupiny na štítku v její barvě — stejné barvy jako ve vzoru a pod kódem.
✓ Odpovídá: … ✗ Neodpovídá: …Dva řetězce, které odpovídají, a jeden, který ne, vytvořené ze vzoru a ověřené skutečným enginem .NET. Mezery se zobrazují jako slabé tečky.
▶ Otestovat vzor…Otevře vzor v okně Tester RegexSmith.

Stav

Na obrazovceVýznam
✓ bezpečný.NET vzor přijímá a nic v něm nemůže katastrofálně zpětně navracet (backtracking).
⚠ může zamrznoutOpakování může na dlouhém vstupu, který téměř odpovídá, trvat exponenciálně dlouho; karta uvede, o jaký druh jde (RX001), a že Ctrl+. nabízí opravy.
✕ neplatnýEngine vzor odmítá; karta ukáže jeho zprávu: .NET tento vzor nepřijímá: …

„Bezpečný“ znamená jen to, že .NET vzor přijímá a nemůže zamrznout. Neznamená, že odpovídá tomu, co zamýšlíte — k tomu slouží příklady a tester.

Podtržení skupin

Každá zachytávací skupina vzoru dostane přímo v kódu tenkou čáru ve své barvě — ve stejné barvě jako na kartě. Dlouhý vzor s pěti skupinami se tak dá přečíst na první pohled: která část je rok a která id.

Skupina uvnitř jiné leží o kousek níž, aby zůstaly vidět obě čáry. Barvy jdou popořadě: lososová, zelená, modrá, fialová, jantarová, tyrkysová — a znovu.

Podtržení lze vypnout v nastavení: Podtrhávat zachytávající skupiny.

Vzory, které mohou zamrznout

Některé vzory trvají na dlouhém řetězci, který téměř odpovídá, exponenciálně dlouho — klasický způsob, jak regulární výraz zablokuje webový požadavek. RegexSmith je najde podle jejich tvaru a pod opakování umístí varovnou vlnovku; najetím myší zjistíte důvod.

Vlnovka RX001 pod ([a-z0-9]+\.?)+ s otevřenou nabídkou Ctrl+. a náhledem opravy: původní vzor přeškrtnutý, nový s atomickou skupinou

Co se podtrhuje (RX001)

Ne uvnitř atomických skupin a výhledů (lookaround) a nikdy s RegexOptions.NonBacktracking — tam k tomu dojít nemůže.

Opravy v Ctrl+.

Umístěte kurzor na vlnovku a stiskněte Ctrl+. — každá oprava ukáže náhled: vzor před (přeškrtnutý) a po.

OpravaCo dělá
Udělat vnitřní opakování atomické: (?>…)Obalí vnitřní opakování do (?>…). Odpovídají stejné řetězce; opakování už nejde rozdělit mnoha způsoby.
Použít RegexOptions.NonBacktracking (.NET 7+)Přidá možnost do volání. Lineární čas pro libovolný vstup; vyžaduje .NET 7 nebo novější. Nabízí se, jen když to vzor dovolí — žádné zpětné odkazy, výhledy, atomické ani vyrovnávací skupiny, podmínky.
Otestovat tento vzor v RegexSmithOtevře vzor v testeru — nabízí se nad jakýmkoli vzorem, nejen rizikovým.

RX001 lze vypnout v nastavení (Nápovědy v editoru) nebo odkazem Tento druh nápovědy nezobrazovat v jeho popisku; opravy v Ctrl+. zůstávají.

Tester

Tester RegexSmith se otevře ukotvený vedle okna Výsledky hledání. Vzor pochází z kódu a zůstává s ním propojený: vyzkoušejte ho na vlastních příkladech, upravte ho a zapište zpět.

Tester RegexSmith: odkaz na zdroj, vzor, stavový řádek, přepínače možností, příklady s očekáváním a zvýrazněnými skupinami, chybný řádek červeně, tabulka skupin a tlačítka

Jak ho otevřít

Vzor a jeho možnosti

Nahoře soubor a řádek vzoru — kliknutím na něj přejdete. Pod ním pole vzoru, stavový řádek (✓ bezpečný, ⚠ může zamrznout nebo chyba enginu, pak N z M podle očekávání · ms) a přepínače možností: IgnoreCase, Multiline, Singleline, IgnorePatternWhitespace, ExplicitCapture, RightToLeft, CultureInvariant. Každá změna se okamžitě spustí znovu.

Příklady a očekávání

Napoprvé jsou tu příklady z karty: dva, které mají odpovídat, a jeden, který nemá. Nový napište do pole Přidejte ukázku a stiskněte Enter…; kliknutím na příklad ho upravíte, ✕ ho odstraní. Značka před každým příkladem říká, co má dělat — kliknutím ji změníte:

Na obrazovceVýznam
✓má odpovídat
✗nemá odpovídat
–bez očekávání, jen zobrazit

Příklad, který dělá opak, zčervená — ✗ odpovídá nebo ✗ neodpovídá — takže se z příkladů stane malá specifikace vzoru. Shody jsou podbarvené, skupiny podtržené svými barvami, mezery zobrazené jako tečky. Běh, který trvá déle než 1 sekundu, se zastaví s ⏱ příliš pomalé.

Skupiny vybrané ukázky vypíše každou shodu vybraného příkladu: celou shodu a pak každou skupinu s její hodnotou a pozicí (nezachyceno, když se jí neúčastnila).

Nahradit

Karta Nahradit přidá pole náhrady — $1, ${name}, $$ pro $ — a ukáže výsledek pro každý příklad tak, jak by ho vrátil Regex.Replace.

Kopírovat, vrátit, použít

Kopírovat jako test jednotek vloží do schránky test s vašimi příklady pro xUnit, NUnit nebo MSTest — specifikace se přesune do testovacího projektu.

Vrátit se vrátí ke vzoru a možnostem z kódu; příklady zůstanou.

Použít v kódu zapíše vzor zpět jako stejný druh literálu, jakým byl (běžný, doslovný nebo surový), spolu s možnostmi — jeden krok Zpět to vrátí. Pokud se kód po otevření testeru změnil, nic se nezapíše: otevřete tester ze vzoru znovu.

Příklady se pamatují pro každý vzor a každé řešení v %LocalAppData%\RegexSmith\samples, takže příště už tam budou. Do repozitáře nic nejde.

Nastavení

Nástroje › Možnosti › SmithWorks › RegexSmith. Každá možnost má krátký popis toho, co dělá.

MožnostVýchozí
Vysvětlovat vzory při najetí myšízapnuto
Podtrhávat zachytávající skupinyzapnuto
RX001 Katastrofální backtrackingzapnuto
Požádat o hodnocení na Marketplacezapnuto

Dole: Obnovit výchozí, Dokumentace, Ohodnotit na Marketplace a Odeslat zpětnou vazbu.

Nastavení se ukládá do %LocalAppData%\RegexSmith.

Stránka možností RegexSmith
Stránka možností.

Časté dotazy

Odesílá RegexSmith nějaká data?

Ne. Vzory se čtou z otevřeného dokumentu a spouštějí se ve vašem počítači; příklady se ukládají do %LocalAppData%\RegexSmith. Žádné síťové požadavky, žádná telemetrie.

Karta říká „✓ bezpečný“. Je vzor správně?

Ne nutně. „Bezpečný“ znamená, že .NET vzor přijímá a žádné opakování v něm nemůže katastrofálně zpětně navracet. Zda odpovídá tomu, co zamýšlíte, mají ukázat příklady: označte je v testeru ✓ nebo ✗.

Proč se nad mým vzorem neobjeví karta?

Karta se objeví nad řetězcovým literálem, o kterém RegexSmith ví, že je to vzor: argument new Regex, statické metody Regex, [GeneratedRegex] nebo [RegularExpression], případně konstanta ze stejného souboru, která se tam používá. Vzor sestavený za běhu (spojený, načtený z nastavení) přečíst nelze. Zkontrolujte také Vysvětlovat vzory při najetí myší v nastavení.

Jaký engine regulárních výrazů se používá?

Engine regulárních výrazů .NET, na kterém běží samo Visual Studio, s možnostmi daného volání. RegexOptions.NonBacktracking (.NET 7+) se z volání také čte; příklady pak běží na běžném enginu a odpovídají stejné řetězce tak i tak.

Použít v kódu nic neudělalo.

Kód vzoru se po otevření testeru změnil, takže RegexSmith nezapisuje do místa, kde už vzor nemusí být — tester to uvede pod tlačítky. Otevřete tester ze vzoru znovu. Kde kód nemá místo pro možnosti ([RegularExpression] žádné nepřijímá), zapíše se vzor a možnosti ne.

Funguje to ve VB.NET, JavaScriptu nebo TypeScriptu?

Ve verzi 1.0 ne: jen C#. Jiné jazyky používají jiné enginy; pokud nějaký potřebujete, napište do repozitáře Feedback.

Kde nahlásit problém nebo navrhnout funkci?

Založte issue v repozitáři Feedback na GitHubu — jsou tam formuláře pro chyby a nápady (prosím změňte soukromé názvy). Můžete také použít kartu Q&A na Marketplace.

Historie změn

1.0.1

1.0.0