Nástroje pro regulární výrazy – Expresso
Jak jsem slíbil, podíváme se v tomto článku na program Expresso a zaměříme se tentokrát především na přepínače (modifikátory) ovlivňující zpracování regulárního výrazu.
Nejdříve si však představíme rozhraní programu Expresso. Hlavní okno programu je rozděleno na tři části:
- horní část – se skládá ze šesti záložek Regular Expression (pouze regulární výraz), Replacement String (řetězec náhrady), Expression Library (knihovna uložených výrazů), Recent Expressions (naposledy použité výrazy), Analyzer (rozklad/vysvětlení výrazu), Options (přepínače, chcete-li modifikáory či „flagy“ – podrobněji viz níže)
- levá dolní část – vstupní text (řetězec)
- pravá dolní část – výsledek operací
Match
(respektiveSearch
) aReplace
Operace Match, Partial Match, Exclude Match
Jako příklad pro operaci Match
použiji stejný výraz jako v článku o programu The Regulator, tedy nalezení e-mailových adres v textu (proto budu na tomto místě již stručnější). Použit byl regulární výraz ([a-zA-Z0-9._-]+)@([a-zA-Z0-9._-]+)\.([a-zA-Z]{2,4})
, který obsahuje tři subvýrazy. Na obrázku tak můžeme vidět strom zobrazující nalezené e-mailové adresy a jejich části. Vyberete-li libovolnou e-mailovou adresu ve stromě, vysvítí se i ve vstupním textu. Operací Match
spustíte tlačítkem Run Match.
Expresso – hlavní okno
Za zmínku rozhodně stojí také tlačítka Partial Match a Exclude Match. Pokud označíte část regulárního výrazu (tak aby označená část byla platným regulárním výrazem) a stisknete Partial Match, provede se operace Match
(tedy porovnání) jen s označenou částí regulárního výrazu. Tlačítko Exclude Match funguje opačně, provede se operace Match
jen s neoznačenou částí regulárního výrazu.
Expresso – Partial Match
Operace Replace
V programu Expresso můžete také provádět záměnu řetězců odpovídajících regulárnímu výrazu. Funkci programu si ukážeme na triviálním, regulární výraz skoro nevyžadujícím, ale užitečném příkladu. Určitě čas od času dostanete nějaký ten tisíckrát přeposlaný e-mail (například nějaký dobrý vtip), jehož každý řádek začíná několikanásobným odsazením pomocí znaku „>“. Pokud chcete takový e-mail očistit od těchto odsazení, můžete jako regulární výraz vyplnit > ?
a pole Replacement String nechat prázdné. Všechny znaky >
(včetně nepovinně následujícího znaku mezery) budou odstraněny. (Tento regulární výraz je velmi primitivní a tak nahradí v textu všechna většítka – ve většině vtipů se však mnoho většítek nevyskytuje.)
Expresso – Replace
Options (Přepínače)
Jak jsem již zmínil v předchozím článku, Expresso podporuje všechny přepínače, které .NET při práci s regulárními výrazy nabízí. Některé přepínače odpovídají modifikátorům, které nabízí PHP (psal jsme o nich v sérii článků Perl-compatible regulární výrazy v PHP). Pokud znáte modifikátory v PHP, podívejte se na malou srovnávací tabulku:
Modifikátor v PHP | Přepínač v .NET |
---|---|
i | IgnoreCase |
m | Multiline |
s | Singleline |
x | IgnorePatternWhitespace |
Ačkoli se na popis jednotlivých přepínačů můžete podívat přímo do MSDN (v manuálu popis těchto přepínačů bohužel nenajdete), každý uživatel programu Expresso nemusí být .NET programátor a tak stručně jednotlivé přepínače popíšu:
- Compiled – regulární výraz bude zkompilován
- CultureInvariant – ignorování jazykových rozdílností
- ECMAScript – zapne ECMAScript vyhodnocování regulárního výrazu
- ExplicitCapture – způsobí, že běžné závorky v regulárním výrazu (vytvářející subvýraz) nebudou zachytávat řetězce (nebude se možno na ně odkazovat pomocí zpětných referencí); zachytávání zajistí pouze pojmenované subvýrazy
- IgnoreCase – ignorování rozdílu mezi malými a velkými písmeny
- IgnorePatternWhitespace – v regulárním výrazu ignoruje mezery část vpravo od znaku
#
(komentář) - Multiline – mění význam
^
a$
v regulárním výrazu;^
vytváří shodu na i na začátku každého řádku,$
vytváří shodu i na konci každého řádku - RightToLeft – vyhledávání zprava doleva
- Singleline – mění význam metaznaku tečka (
.
); tečka vytváří shodu i se znakem konce řádku (\n
)
Další funkce a vlastnosti
Projekty (nastavení regulárního výrazu, řetězce pro záměnu a vstupního textu) můžete ukládat do souborů s příponou .xso. Pokud s regulárními výrazy začínáte a nejste si jisti, co který znak či konstrukce ve výrazu znamenají, může vám přijít vhod také Analyzer (záložka Analyzer – viz druhý obrázek výše), který rozebere regulární výraz na části a tyto části slovně interpretuje. Pří tvorbě regulárního výrazu vám také může pomoci Builder (v menu | Tools | Show Builder |), kde v šesti záložkách najdete různé konstrukce a speciální znaky, které můžete vložit přímo do vytvářeného výrazu.
Expresso – Builder
Naposledy použité regulární výrazy vám jsou k dispozici pod záložkou Recent Expressions. Užitečné regulární výrazy si můžete ukládat do knihoven regulárních výrazů – tyto knihovny je také možno uložit jako .xso soubory (menu Library).
Expresso – Regular Expressions Library
Časovou náročnost daného regulárního výrazu na předloženém textu si můžete docela dobře vyzkoušet pomocí funkce Timing (v menu | Tools | Timing Tests... |). Tato funkce provede operaci Match
ve stanoveném počtu opakování. Vyzkoušet si tak můžete třeba rozdíl mezi regulárními výrazy <.+?>
a <[^>]+>
. Oba (zjednodušeně) popisují HTML tag, každý to však dělá jinak. (Bylo by možno ukázat i přiklad, kde bude rozdíl v náročnosti ještě markantnější – takový příklad by však vyžadoval podrobnější popis.)
Expresso – Timing
Programu Expresso umí také přímo generovat kód pro C#, Visual Basic a Managed C++. Program obsahuje nápovědu popisující většinu funkcí a také „The 30 Minute Regex Tutorial“, vysvětlující tvorbu regulárních výrazů. Expresso 2.1 je freeware. Časově omezenou verzi programu si můžete stáhnout a po bezplatné registraci vám bude e-mailem zaslán registrační kód, který odstraní časové omezení.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Proč je důležité tvořit obsah na váš web?
29. srpna 2024 -
Fandíme českým sportovcům a rozdáváme hosting ZDARMA!
26. července 2024 -
Nové AI modely od Open AI a Google
22. května 2024 -
AI na dosah ruky: Jak je to s AI v osobních zařízeních?
22. ledna 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
Martin Fiala
Led 15, 2020 v 16:51Jedním z online nástrojů, které umožňují práci s regulárnímy výrazy je na http://retezce.jednoduse.cz/. Dále je zde na výběr z dalších funkcionalit jako šifrování, převod znakových sad ad. funkce pro práci s textovými řetězci, které jsou často převzaty z PHP (urlencode, urldecode, crc32, náhodné číslo, reverse string…).