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ý](../../regexsmith/marketplace/hero.png)
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ší nad vzorem v C#: vzor s barevnými skupinami, řádek srozumitelnými slovy pro každou část, barevné štítky skupin a stav — ✓ bezpečný, ⚠ může zamrznout nebo ✕ neplatný.
- Podtržení skupin: tenká čára v barvě skupiny pod každou zachytávací skupinou přímo v kódu; vnořené skupiny leží níž.
- Příklady vytvořené ze vzoru — dva řetězce, které odpovídají, a jeden, který ne — ověřené skutečným enginem .NET.
- RX001: vlnovka pod opakováními, která mohou trvat exponenciálně dlouho, s opravami v Ctrl+. a náhledem před a po.
- Tester RegexSmith, ukotvený vedle okna Výsledky hledání: vaše příklady s očekáváním ✓/✗, zvýrazněné shody a skupiny, tabulka skupin a karta Nahradit.
- Použít v kódu: upravený vzor se vrátí do stejného druhu řetězcového literálu, i s možnostmi, jako jeden krok Zpět.
- Kopírovat jako test jednotek pro xUnit, NUnit nebo MSTest — z vašich příkladů se stanou testovací případy.
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ý.

Kde funguje
V souborech C# nad vzorem v:
new Regex("…"), sRegexOptionsi bez nich;- statických metodách
Regex.IsMatch,Match,Matches,Replace,SplitaCount; [GeneratedRegex("…")];[RegularExpression("…")]— karta pak uvádí Ověření: musí odpovídat celá hodnota;const stringve stejném souboru, který některé z nich použí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 obrazovce | Význam |
|---|---|
| RegexSmith · Regulární výraz .NET · IgnoreCase | Druh vzoru a možnosti přečtené z volání, vpravo stav. |
| Vzor | Zá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 skupin | Ná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 obrazovce | Význam |
|---|---|
| ✓ bezpečný | .NET vzor přijímá a nic v něm nemůže katastrofálně zpětně navracet (backtracking). |
| ⚠ může zamrznout | Opaková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](../../regexsmith/marketplace/backtracking.png)
Co se podtrhuje (RX001)
- Vnořené opakování:
(a+)+,([a-z0-9]+\.?)+— jeden úsek stejných znaků lze mezi vnitřní a vnější opakování rozdělit velmi mnoha způsoby. - Opakování alternativ, které odpovídají stejným znakům:
(\w|\d)+— číslici může vzít kterákoli větev, takže každá číslice práci zdvojnásobí.
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.
| Oprava | Co 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 RegexSmith | Otevř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.

Jak ho otevřít
- ▶ Otestovat vzor… na kartě při najetí myší;
- Ctrl+. na vzoru › Otestovat tento vzor v RegexSmith;
- pravé tlačítko v souboru C# › Otestovat vzor regulárního výrazu;
- Zobrazit › Další okna › Tester RegexSmith — bez propojení s kódem: místo, kde vyzkoušet vzor.
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 obrazovce | Vý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žnost | Výchozí |
|---|---|
| Vysvětlovat vzory při najetí myší | zapnuto |
| Podtrhávat zachytávající skupiny | zapnuto |
| RX001 Katastrofální backtracking | zapnuto |
| Požádat o hodnocení na Marketplace | zapnuto |
Dole: Obnovit výchozí, Dokumentace, Ohodnotit na Marketplace a Odeslat zpětnou vazbu.
Nastavení se ukládá do %LocalAppData%\RegexSmith.

Č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
- Nápovědy v editoru mají na stránce možností vlastní seznam a odkaz v popisku vypne druh nápovědy přímo tam, kde ji vidíte.
1.0.0
- První vydání: karta při najetí myší s rozborem srozumitelnými slovy, barevnými skupinami, příklady ověřenými enginem .NET a stavem; podtržení skupin v kódu; RX001 pro vzory, které mohou zamrznout, s opravami atomickou skupinou a NonBacktracking v Ctrl+.; Tester RegexSmith s očekáváním, skupinami, kartou Nahradit, příkazy Kopírovat jako test jednotek a Použít v kódu; jednorázová prosba o hodnocení.