Přejít k navigační liště

Zdroják » Různé » Nástroje k testování regulárních výrazů

Nástroje k testování regulárních výrazů

Články Různé

Krátký příspěvek nejen o tom, jak regulární výrazy testovat. Ukážeme vám šest nástrojů, které se k tomu hodí: REGex TESTER, RegExp.cz, Online Regular Expression Tester, Regex Coach, rozšíření Tester regulárních výrazů a Expresso 3.0. Předvedeme, jak je používat a podle jakých kritérií si vybrat ty správné.

Každý webový vývojář se během své činnosti dříve či později setká s regulárními výrazy (také tzv. regexpy, či regexy z angl. REGular EXPression). Jedná se o mocný a užitečný nástroj.

Proč testovat regulární výrazy

V kódu webových aplikací se regulární výrazy zpravidla vyskytují v množstvím větším než malém, a proto je dobré je na každém kroku testovat, neboť právě tak nejsnáze odhalíme chyby. Než si řekneme, jak na to, připomeneme si druhy regulárních výrazů.

Druhy regulárních výrazů

Regulární výrazy se dělí na dvě základní skupiny (ve skutečnosti je skupin víc, ale nejsou pro webové vývojáře tolik důležité):

  • POSIXové (C++ like, někdy POSIX-compatible) regulární výrazy, které jsou relativně jednodušší na pochopení i použití, ale nejsou tak výkonné – umožňují pouze 9 zanoření. V PHP jsou implementovány např. funkcemi ereg, ereg_replaceeregi.
  • PREG (Perl like, někdy Perl-compatible) regulární výrazy, které jsou o něco složitější, ale mnohem výkonnější, rychlejší a mají širší uplatnění – zanoření mají např. 99 (v PHP jsou implementovány např. funkcemi preg_matchpreg_replace).

Jak testovat regulární výrazy

Regulární výrazy můžeme testovat dvěma možnými způsoby:

  • Pokud nám jde o otestování výsledku, nebo testujeme regulární výraz pod PHP, JavaScriptem atd., je nejsnadnější metodou použití některého online testeru regulárních výrazů. Těch je k dispozici velké množství. Výhodou je jejich okamžitá připravenost a také to, že provádějí testování zpravidla přímo v jazyce, ve kterém i my pracujeme (PHP, JavaScript …). Naopak jejich nejcitelnější nevýhodou je to, že před vás postaví až před konečný výsledek.
  • Je tu i druhá možnost desktopové (IDE) testery regulárních výrazů. Často nabízí schopnost zobrazování procesu vyhodnocování regulárního výrazu krok za krokem. A  díky ní může i naprostý začátečník nejen otestovat i velmi složitý regulární výraz, ale může se i naučit jim dobře rozumět.

Čím testovat regulární výrazy

Nástrojů na testování regulárních výrazů je velké množství. Vybrali jsme šest z nich, které vám představíme:

Online nástroje

REGex TESTER

REGex TESTER je typickým zástupcem první kategorie testerů, jedná se o online tester v anglickém jazyce. Umožňuje nám rychle a efektivně zjistit, zda naše regulární výrazy fungují tak, jak mají. Nabízí několik druhů syntaxe a stručný manuál k regulárním výrazům.

REGex TESTER
  • typ: online tester
  • výhody:
    • je zdarma
    • podporuje preg, ereg a javascriptovou syntaxi regulárních výrazů
    • podporuje realtime zpracování – používá AJAX (odezvu vidíte již během psaní)
    • stručný manuál s příklady a návod k používání regexpů v JavaScriptu a PHP
    • podporuje nahrazování
  • nevýhody:
    • jeho vstupní pole pro regulární výraz je velmi malé
    • neatraktivní a špatně použitelné GUI
  • shrnutí:
    • Dobrá volba, pokud nemáme po ruce lepší nástroj.

RegExp.cz

RegExp.cz je českým zástupcem z rodiny online testerů. Podporuje opět několik druhů syntaxe, obsahuje stručnou nápovědu k regulárním výrazům a svému použití a rovněž rozcestník webů, kde můžeme najít další informace o regulárních výrazech.

RegExp.cz
  • typ: online tester
  • výhody:
    • je zdarma
    • podporuje preg, PHP, javascriptovou a AWK syntaxi
    • v češtině
    • stručný manuál s příklady
    • informační rozcestník
    • přehledné a intuitivní GUI
  • nevýhody:
    • nepoužívá AJAX (po dopsání musíte odeslat formulář)
    • nepodporuje nahrazování
  • shrnutí:
    • Nepotřebujeme-li testovat nahrazování, a preferujete-li češtinu, můžeme vřele doporučit.

Online Regular Expression Tester

Online Regular Expression Tester je příkladem toho, kam až může zajít užitečnost online testeru i přes jeho „online“ omezení. Sice podporuje pouze jeden druh syntaxe (preg), ale zato, jak se říká, pořádně.

Tester je v angličtině a kromě základních testů nabízí i několik dalších vychytávek – např. možnost konverze zadaného testu na verifikační javascriptovou funkci.

Online Regular Expression Tester
  • typ: online tester
  • výhody:
    • je zdarma
    • podporuje preg syntaxi regulárních výrazů
    • stručný manuál s příklady
    • informační rozcestník
    • používá AJAX
    • velmi přehledné a intuitivní GUI se záložkami
    • několik režimů testování, včetně nahrazování textu
    • integrovaná historie
    • možnost konverze testu do JavaScriptu a HTML
    • závorkový (Parenthesized) výstup – analýza výrazu s ohledem na ozávorkování
  • nevýhody:
    • nepodporuje realtime zpracování
    • podporuje pouze preg syntax
  • shrnutí:
    • Nepotřebujete-li testovat nahrazování a máte-li rádi český jazyk, můžeme tester vřele doporučit.
Testujete regulární výrazy?

Desktopové nástroje

The Regex Coach

The Regex Coach je zástupcem druhé skupiny testerů – plnohodnotných aplikací pro testování regulárních výrazů napsaný v LISPu. The Regex Coach je příkladem téměř všech výhod, které může desktopová varianta testeru nabízet – například vyšší rychlost, vyšší komfort ovládání, vyšší funkční možnosti.

Poslední bod naplňuje například tím, že umožňuje testování regulárního výrazu metodou step-by-step, kdy může uživatel snadno pozorovat, jak přesně dochází k vyhodnocení testovaného regulárního výrazu. Desktopová IDE mají pochopitelně i své nevýhody. Mezi nejvýznamnější z nich patří obvykle ztráta multiplatformnosti – tu The Regex Coach kompenzuje částečně tím, že původně na úrovni různých buildů multiplatformní byl. To ale pro nové verze již neplatí.

The Regex Coach
  • typ: aplikace – IDE tester
  • výhody:
    • je zdarma
    • podporuje preg syntaxi regulárních výrazů
    • podporuje nahrazování i částečné testování
    • podporuje metodu step-by-step
    • podporuje realtime zpracování
    • je rychlý
    • umožňuje zpracování velkého objemu dat
    • stromový (tree) a závorkový (parenthesized) výstup – analýza výrazu s ohledem na ozávorkování
    • přehledné a intuitivní GUI
  • nevýhody:
    • podporuje pouze jeden typ syntaxe (preg)
    • nové verze nejsou multiplatformní
  • shrnutí:
    • Stačí-li nám testování preg výrazů (což je často optimální syntaxe) a máme-li kompatibilní OS, pak je The Regex Coach tou nejlepší možnou volbou. Jedná se o TIP autora článku!

Rozšíření Tester regulárních výrazů

Tester regulárních výrazů je příkladem hybridu mezi oběma skupinami testerů. Je to rozšíření prohlížeče Firefox, jeho multiplatformnost je tedy velmi vysoká. A jako hybridní řešení může těžit z obou světů. Tester regulárních výrazů umožňuje všechny základní operace s regulárními výrazy – bohužel pouze v rámci ereg syntaxe. Podporuje nahrazování textu a zvýrazňování.

Tester regulárních výrazů
  • typ: rozšíření pro Firefox
  • výhody:
    • je zdarma
    • podporuje ereg syntaxi regulárních výrazů
    • je lokalizován do češtiny
    • podporuje realtime zpracování
    • podporuje nahrazování textu a zvýrazňování
    • přehledné a jednoduché GUI
    • multiplatformní
  • nevýhody:
    • podporuje pouze ereg syntaxi regulárních výrazů
    • ke svému běhu potřebuje hostitelskou aplikaci
    • nepodporuje žádné pokročilé vlastnosti
  • shrnutí:
    • Vyvíjíte-li v ereg syntaxi a chcete-li provádět rychle základní testování a nechcete-li se zdržovat složitou instalací, pak je Tester regulárních výrazů to, co hledáte. V opačném případě je lepší se porozhlédnout jin­de…

Expresso 3.0

Expresso 3.0 je příkladem toho, jak se může IDE tester zvrtnout. Jedná se o velmi komplexní desktopovou aplikaci se vším, co k tomu patří – je platformě závislá, rychlá a…složitá. Patrně s regulárními výrazy umožňuje provádět jakékoliv operace, které vás napadnou.

Otázka zní, jestli ji k tomu dovedete přesvědčit. O nějaké intuitivnosti GUI tohoto IDE se nedá ani mluvit. Použitelnost této aplikace lze nejlépe vyjádřit dobře známým obrázkem od Erika Burkeho. Ano, i tak může IDE pro testování regulárních výrazů vypadat.

Expresso 3.0
  • typ: aplikace – IDE tester
  • výhody:
    • je zdarma – po 60 dnech nutná bezplatná registrace
    • podporuje mnoho syntaxí regulárních výrazů
    • rozsáhlá databáze již hotových regulárních výrazů
    • velmi podrobný manuál s příklady a nápovědou
    • je rychlé
    • umožňuje provádět velmi komplexní analýzu včetně metody step-by-step
  • nevýhody:
    • zcela nepřehledné GUI na hranicích použitelnosti
    • velká složitost celé aplikace
    • je to „kanón na vrabce“
    • platformní závislost na Windows
    • nepodporuje realtime zpracování
    • i jednoduché operace vyžadují studium aplikace
  • shrnutí:
    • Nejste-li maniak, pak tuto aplikaci nelze doporučit. V jejím použití se kromě autora aplikace vyzná (možná) patrně jen někdo, kdo se v takovýhle věcech vyžívá…

Další nástroje

Nástrojů je celá řada, proto pokud vás některý z těch představených v článku nezaujal, můžete hledat další. Navíc si takový tester můžete snadno napsat sami.

Další možností je stáhnutí IDE formou pluginu do některé aplikace, kterou již používáme – např. do Eclipse.

Závěrem

Nyní, když jsme si představili některé nástroje, můžete zodpovědět několik otázek. Jaké regexpy používáte? Jaké nástroje používáte k jejich testování? Je pro vás důležitý jen výsledek, nebo využíváte funkce step-by-step?

Komentáře

Subscribe
Upozornit na
guest
26 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Petr 'PePa' Pavel

http://myregexp.com/eclipsePlugin.html

Jednoduché a rychlé.
Petr 'PePa' Pavel

Anonymní
Anonymní
Ether

http://rexv.org/

Já jsem před nějakou dobou narazil na Rex V a pracuje se mi s ním docela pěkně. Umí PCRE i POSIX a dokonce i javascriptovou odnož.

slady

> V kódu webových aplikací se regulární výrazy zpravidla vyskytují v množstvím větším než malém

Při vývoji webových aplikací jsem ještě nikdy nenarazil na regulární výrazy.

To bude tím, že vyvíjíme v něčem pořádném a ne v PHP. :-D

benzin

Nemyslim, ze to bude tim. Spis bych sazel na to ze nemate regularni vyrazy v krvi. Ja sem je taky dlouha leta nepouzival, nicmene ted to chapu spis jako handicap, protoze zbehlost v regularech muze v nekterych oblastech praci hodne usnadnit.

P.S.: Vyvijim v Jave

slady

Zlatý citát (jak z Programátorských poklesků):

"Měli jsme problém. Pokusili jsme se ho vyřešit regulárním výrazem. Teď máme dva problémy."

Ale teď aspoň trochu vážně: regulární výrazy opravdu nemám moc v krvi. Naposledy jsem je používal tak před deseti lety, když jsem v Perlu hromadně zpracovával nějaké konfiguráky. (Mimochodem, od té doby nemám rád ani Perl ani regexpy.) Od té doby řeším jiné úkoly, takže se s regexpy už ani nepotkám, protože v tom co dělám, mi rozhodně nemůžou pomoct.

Ve svém komentáři jsem se pozastavil nad tím, proč by se ve webové aplikaci měly používat regexpy, navíc když už to spousta frameworků řeší za nás (např. ověření data narození). Ruku na srdce, v téhle oblasti jsem regexp ještě nepotkal.

Anonymní

To predsa nema nic spolocne s pouzitym jazykom ale s tym, aky typ aplikacii si robil.

slady

Ano, webové aplikace. Přesně ty, o nichž v tom odstavci byla řeč. :-D

Michal

A co je to za zázračnou technologii? Mimochodem já si svůj programátorský život bez regexů nedokážu představit. Používám je v Pythonu neustále, v Javě a v Javascriptu hodně často (např. validace datumů, mailů, čísel OP, IČ, rozparsrování názvu a major/minor verze prohlížeče… Prostě hodně.

slady

Parsovat rodné číslo nebo identifikační číslo organizace, to ještě chápu, ale proč by ještě dneska někdo ručně testoval platnost data v Javě nebo JavaScriptu? To si snad snad ze mě děláte srandu! Existují spousty webových frameworků, které to za mě udělají bezpracně, jako mávnutím kouzelného proutku. Tak proč to ručně ověřovat na serveru nebo na klientu?

Anonymní

Ja pouzivam kodos, ale idem vyskusat ten co vie robit step by step.
Kodos je fajn, len mi vadi ze testovanie bezi v hlavnom therate, takze niektore zle vyrazy dokazu vytuhnut celu aplikaciu ktoru treba potom uz len killnut.

beer

Regex Coach doporucuju, pouzivam ho jiz leta :)

Leinad

U mě se moc dlouho neohřál… V době, kdy jsem ho potřeboval, jsem po něm požadoval, aby pracoval s azbukou a on psal místo toho nějaké nesmyslné znaky…

Anonymní

Pouzivam regexbudy, sice je to jenom trial, ale stoji to fakt za to. Ma templaty pro nekolik jazyku, takze staci jen copy&paste. Umi nahrazovat a hledat v souborech, je to proste to nejlepsi co jsem zatim videl.

mkxx

Mohu se jedině přimluvit za RegexBuddy.

Umí několik "regex-flavors", takže je možné psát regulérní výraz jak pro PHP (preg/ereg), tak pro JavaScript, MS.NET, atd. Po přepnutí zvýrazní červeně nepodporované funkce tou či danou implementací.

Ke všemu obsahuje docela hezký debugger (ano!) regulérních výrazů, takže je možné vidět, jak moc je náročný backtracking a co se děje v každém kroku na každé pozici. A to ani nemluvím o skvěle zpracované nápovědě popisující i jednotlivé "fíčury" regulérních výrazů vč. dopadu na výkonnost výsledného řetězce.

meap

Souhlasím. Velice dlouho jsem hledal ideální nástroj a RegexBuddy jsem záměrně ignoroval, protože jsem si říkal, že tak vývojářsky základní věc bude mít určitě kvalitní nástroj z řad open source nebo tak.

Nakonec jsem si RegexBuddy zakoupil, protože prostě nic lepšího není.

andrejk
gary_dEEN

Oblíbil jsem si KRegExpEditor, nemaje nic lepšího. Jaký nástroj používáte na Linuxu?

Anonymní
Logik

A že uhádnu, který „regulární jazyk“ má autor radši?


PREG (Perl like, někdy Perl-compatible) regulární výrazy, které jsou o něco složitější,
ale mnohem výkonnější, rychlejší a mají širší uplatnění

Rychlost jazyků jako takovejch bude stejná, nanejvejš bohatší PCRE budou díky bohatším možnostem pomalejší. Že nejběžnější implementace PCRE možná je rychlejší než nejběžnější implementace POSIXovejch regexpů je možný, ale to je trochu něco jinýho než co autor tvrdí…

wagoon

jaky typ regularnich vyrazu se pouziva v .htacces?

myf

http://regexpal.com/ – JS s menším rozšířením, s obarvováním syntaxe, bohužel bez analýzy submatchů. Dělal kluk který momentálně píše o regexpech knížku s autorem Regex Buddy pro o'Reillyho :)

kahy

Jenom mala poznamka k REGex TESTER (prvni v testu).V hodnoceni bylo ze pole pro zadani vyrazu jsou prilis mala. Tyto pole je mozne libovolne zvetsit (naprave strane je pro to ovladaci prvek)

mirek

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.