Utilia

Vizualizace regulárních výrazů

Změň regulární výraz v JavaScriptu na přehledný železniční diagram se skupinami, alternativami, smyčkami a lookaround a exportuj ho jako SVG nebo PNG.

Příznaky: libovolné z d g i m s u v y. Můžeš také vložit zápis typu /\d+/g.

Zachytávací skupiny
–
Alternativy
–
Kvantifikátory
–

Železniční diagram

Modrá: doslovný text. Zelená: typy znaků a množiny (červená: vyloučená množina). Fialová: kotvy a hranice. Oranžová: zpětné odkazy. Čárkované rámečky: skupiny a lookaround. Cesta nad prvkem ho přeskakuje, cesta pod ním ho opakuje.

Jak vizualizovat regulární výraz

  1. Napiš nebo vlož svůj výraz do pole Regulární výraz. Můžeš vložit i úplný zápis z JavaScriptu, například /^\d{3}-\d{4}$/gm: lomítka se odstraní a příznaky se samy přesunou do pole příznaků.
  2. Podle potřeby přidej příznaky (libovolné z d g i m s u v y). Příznaky mění kresbu některých částí: s m se z ^ a $ stane „začátek řádku“ a „konec řádku“, se s se z tečky stane „libovolný znak“.
  3. Diagram se aktualizuje během psaní. Tlačítko Nakreslit diagram ho překreslí na požádání a Další příklad prochází několik běžných výrazů (e-mail, telefonní číslo, hexadecimální barva, cena, značka HTML, URL).
  4. Diagram čti zleva doprava, od plné tečky ke tečce s kroužkem. Každá cesta, kterou můžeš sledovat, je řetězec, který výraz dokáže zachytit.
  5. Stáhnout SVG dá ostrý vektorový obrázek (dokumentace, prezentace), Stáhnout PNG obrázek ve dvojnásobném rozlišení a Kopírovat kód SVG vloží kód do webové stránky.

Najetím na rámeček zobrazíš část výrazu, ze které pochází, a její pozici.

Jak číst železniční diagram

Železniční diagramy, nazývané také syntaktické diagramy, popisují gramatiku jako soustavu tratí. Regulární výraz je přesně taková gramatika, takže kresba ukazuje jeho strukturu mnohem lépe než hustý řádek symbolů:

  • Modré rámečky jsou doslovný text, který se musí objevit tak, jak je napsán, například „@“.
  • Zelené rámečky jsou typy znaků (\d číslice, \w znak slova, . libovolný znak…) a třídy znaků. Třída jako [\w.+-] se změní na rámeček s nadpisem „jeden z“ a výčtem položek; negovaná třída [^…] je červená a má nadpis „žádný z“.
  • Fialové pilulky jsou kotvy a hranice: začátek a konec textu či řádku, hranice slova \b. Zachycují pozici, ne znak.
  • Oranžové čárkované rámečky jsou zpětné odkazy, například \1 nebo \k<name>: stejný text, jaký zachytila dřívější skupina.
  • Čárkované rámce jsou skupiny. Zachytávací skupiny se číslují podle pořadí otevírací závorky („skupina č. 2 „domain““); nezachytávací skupiny (?:…) rámec nemají. Lookahead a lookbehind dostanou růžový rámec s popiskem „následuje“ nebo „předchází“, protože kontrolují text, aniž by ho spotřebovaly.
  • Rovnoběžné koleje jsou alternativy oddělené znakem |.
  • Cesta nad prvkem umožňuje prvek přeskočit (?, *, {0,n}). Cesta pod ním se šipkou vede zpět a prvek opakuje (+, *, {n,m}). Jiné počty než obvyklé se píšou pod smyčku, například „2 až 5ד, a líné kvantifikátory (+?, *?) jsou označeny „líný“.

Chybové zprávy s pozicí

Výraz kontroluje vlastní engine regulárních výrazů JavaScriptu ve tvém prohlížeči, takže nástroj přijme přesně to, co new RegExp() se stejnými příznaky. Když engine výraz odmítne, nástroj ukáže na problematický znak s jeho pozicí a stříškou pod výrazem. Rozpozná nepárovou ), skupinu, která není nikdy uzavřena, třídu znaků bez ], kvantifikátor bez čeho opakovat (*a, a|+), osamocené zpětné lomítko na konci a kvantifikátory {n,m}, kde je n větší než m. Jiné chyby, například zpětný odkaz na neexistující název skupiny, se zobrazí s hláškou prohlížeče.

Výraz se jen zkompiluje kvůli ověření: nikdy se nespouští nad žádným textem a nic neopouští tvůj prohlížeč.

Časté dotazy

Jakou variantu regexu nástroj podporuje?

Regulární výrazy JavaScriptu (ECMAScript), včetně pojmenovaných skupin, lookbehind, Unicode escape sekvencí \p{…} a příznaku v s vnořenými třídami. Výrazy z PCRE, Pythonu či Javy obvykle fungují také, ale syntaxe specifická pro tyto enginy, například přivlastňovací kvantifikátory nebo (?P<name>…), se odmítne, protože ji prohlížeč nepodporuje.

Proč se moje nezachytávací skupina nekreslí jako rámeček?

Skupina jako (?:\.[\w-]+) jen seskupuje prvky, aby se kvantifikátor nebo alternativa vztahovaly na všechny. Nevytváří zachycení, takže diagram ukáže její obsah a smyčku bez rámce, což udržuje kresbu přehlednou. Skupiny s příznaky v textu se rámují a označí těmito příznaky.

V čem se liší přeskakující cesta od smyčky?

Cesta nad prvkem znamená „nula opakování je povolena“ a cesta pod ním „může se opakovat“. ? má jen horní cestu, + jen dolní a * obě. U kvantifikátoru jako {2,4} nese smyčka popisek „2 až 4ד.

Mohu diagram použít ve své dokumentaci?

Ano. Export SVG je samostatný vektorový soubor s bílým pozadím a tmavými čarami, ideální pro soubory README, wiki a prezentace. Export PNG se vykresluje ve dvojnásobné velikosti oproti kresbě na obrazovce, aby byl ostrý na displejích s vysokou hustotou pixelů.

Je velikost omezená?

Výrazy mohou mít až 5 000 znaků. Velmi dlouhé výrazy dají široký diagram, který můžeš posouvat do stran; jejich rozdělení na pojmenované části obvykle usnadní údržbu diagramu i regexu.