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
-
4 tipy, jak na efektivní úsporu při rozjezdu podnikání
3. ledna 2023 -
Gaming na HDR monitoru: Stojí to za to?
12. srpna 2024 -
Co je to DNSSEC, jak funguje a jak si ho nastavit?
14. srpna 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. 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…).