reklama

Staňte se programátorem: Tajemné regulární výrazy

Před regulárními výrazy má začínající programátor zpravidla obrovský respekt a občas i strach. Nebojte se jich, jsou jednoduché a často nahradí desítky řádků zdrojového kódu.

Dnešní projekt bude vlastně velmi jednoduchý, programovat totiž nebudeme C# kód, ale regulární výrazy, které nachází bohaté uplatnění napříč jazyky počínaje webovým Javascriptem a konče třeba jazyky z rodiny Microsoft .NET Framework. Součástí dnešního dílu tedy bude jednoduchá aplikace – tester, ve kterém budete moci trénovat regulární výrazy nejen z tohoto článku.

Regulární výraz je řetězec představující určitý vzor či formát podřetězce, jež má být v cílovém textu vyhledán ve všech možných variantách a který tomuto výrazu odpovídá.. Pomocí tříd .NET Frameworku určených pro manipulaci s regulárními výrazy můžete:

  • velmi rychlým způsobem vyhledávat podřetězce dle určitých kritérií
  • zjišťovat zda je určitý podřetězec vůbec v textu obsažen a pokud ano, zjistit jeho pozici a počet výskytů
  • najít a nahradit vyhledávaný podřetězec

Pomocí regulárního výrazu, který se vleze na jeden řádek stránky, tedy můžete sestrojit celkem složitý filtr, čehož využívají nejrůznější webové vyhledávače, programy pro hromadné přejmenovávání souborů nebo třeba vyhledávání textu v rozsáhlém dokumentu. V podmínce lze regulární výraz použít jako kontrolu na správně vyplněnou elektronickou adresu (e-mail má formát text@text.text), datum, IP adresu aj.

Klepněte pro větší obrázek
Pomocí regulárního výrazu (vzoru) jsme v textu našli slova jablko a jablka

Nejjednodušší regulární výrazy

Jako nejjednodušší regulární výraz lze považovat čistý text. Ten bude vyhledán, ať je samotným slovem či součástí jiného slova. Pokud chceme definovat určitou množinu znaků, která může být v hledaném podřetězci, uzavřeme tyto znaky mezi hranaté závorky. Například výraz „Honz[aou]“ vyhledá výrazy Honza, Honzo nebo Honzu. Pro definování rozsahu znaků použijeme znak „-“, takže například „[a-k]“ vyhledá veškeré malé znaky, které jsou v abecedě od písmene „a“ po písmeno „k“. To samé platí i pro číslice, takže výraz „[1-4]“ bude odpovídat všem číslům od jedné do čtyř. Pokud nechceme, aby určitý znak nebyl obsažen ve vyhledávaném podřetězci, použijeme znak negace „^“.

Předdefinované typy znaků

Speciální znaky slouží ke konkrétnímu definování typu množiny znaků. Výčet těch nejpoužívanějších uvádím v následující tabulce:

Předdefinované typy znaků
.Představuje libovolný znak
\dPředstavuje číslici
\wPředstavuje písmeno abecedy nebo číslici
\bPředstavuje mezeru.
^Slouží k definování začátku řetězce
$Definuje konec řetězce
\nPředstavuje nový řádek

Příklady

.+\.

Vyhledá větu ukončenou tečkou. Znak „+“ říká, že se předchozí znak může opakovat minimálně jednou.

\w+

Vyhledá libovolnou posloupnost alfanumerických znaků

\bjablk[oa]\b

Vyhledá slovo jablko nebo jablka jako samostatné slovo oddělené mezerami.

^\w\d+$

Vyhledá řetězec začínající písmenem a končící alespoň jednou číslicí.

Nezapomeňte, že všechny tyto speciální znaky musí obsahovat znak „\“, jinak by byly brány jako obyčejné písmeno. Výjimku tvoří tečka představující libovolný znak. Pokud bychom chtěli vyhledat tečku nebo samostatné lomítko, musíme před ně dosadit znak „\“.

Opakování znaků

Pro určení způsobu opakování znaků slouží následující direktivy:

Direktivy pro opakování znaků
+Znak se musí opakovat alespoň jednou.
{x,y}Znak se musí opakovat nejméně xkrát ale maximálně y-krát.
{x,}Znak se musí opakovat nejméně xkrát.
*Znak se může opakovat v libovolném počtu nebo nemusí být vůbec obsažen.
{x}Znak se musí opakovat právě xkrát.

Příklady:

hé+j

Vyhledá héj, hééj, héééj atd....

\d{3}\s\d{2}

Vyhledá poštovní směrovací číslo ve tvaru xxx yy

(-|)\d{1,}(\.|)\d*

Vyhledá libovolné desetinné i celé číslo, které může být i záporné. Závorky zde slouží k definici výběru mezi několika hodnotami. Jednotlivé hodnoty se mezi závorkami oddělují znakem |.

(\w{1,}\.\w{1,}|\w*)@\w{1,}\.\w{2,3}

Vyhledá e-mailovou adresu

A to je vše. Nakonec si regulární výrazy můžete sami vyzkoušet, ke stažení totiž opět nabízíme zdrojové kódy včetně projektu pro Visual Studio 2008 (Express Edition) a spustitelný program jednoduchého testeru.


Mareš, Amadeo: 1001 tipů a triků pro C#

Klepněte pro větší obrázekNestačí vám náš seriál? Pořiďte si knihu jeho autora, ve které vás seznámí s tisícovkou programovacích tipů a technik.Díky velkému počtu tipů, návodů, triků a rad kniha poslouží při každé příležitosti. Kdykoli si nevíte rady, stačí nalistovat příslušnou stranu a problém okamžitě vyřešit. Tipy a triky míří především na začínající programátory; užitečné rady tu ovšem najdou i pokročilejší vývojáři a ostřílení znalci. SOučástí publikace je i přiložené DVD, na kterém najdete bezplatné vývojové prostředí Visual C#, databázový server a především všechny zdrojové kódy z knihy, takže je budete moci okamžitě použít.Webové stránky knihy.

Témata článku: Programování, Tester, 1001

19 komentářů

Nejnovější komentáře

  • bob7 12. 2. 2010 11:17:03
    není náhodou v posledním výrazu...
  • Substance242 17. 9. 2009 23:51:54
    Aha. Jedine že by tak. :-)
  • Wikan 17. 9. 2009 22:43:30
    Slova regulární a regulérní mají odlišné významy.
reklama
Určitě si přečtěte

Vybíráte herní periferii nebo hardware? Pak zapomeňte na nálepku Gaming

Vybíráte herní periferii nebo hardware? Pak zapomeňte na nálepku Gaming

** Herní hardware se od toho běžného často liší jen vzhledem ** Při výběru stále nezapomínejte na základní parametry ** Poradíme jak vybrat herní hardware i periferie

20.  2.  2017 | Stanislav Janů | 35

10 nejhorších produktů v historii Microsoftu

10 nejhorších produktů v historii Microsoftu

20.  2.  2017 | Karel Javůrek | 131

Pojďme programovat elektroniku: Žádný bastlíř se neobejde bez armády švábů

Pojďme programovat elektroniku: Žádný bastlíř se neobejde bez armády švábů

** Každý bastlíř se po čase neobjede bez armády švábů ** Dnes si některé z nich vyzkoušíme ** Třeba zázračný posuvný registr

19.  2.  2017 | Jakub Čížek | 39

Facebook o nás ví vše. Díky dobře skrytému vyhledávači se to dozví i ostatní

Facebook o nás ví vše. Díky dobře skrytému vyhledávači se to dozví i ostatní

** Facebook o nás ví vše, protože mu to sami řekneme ** V jeho nitru se skrývá mocný vyhledávač ** Mohou jej zneužít stalkeři, sociální inženýři a další nezbedníci

16.  2.  2017 | Jakub Čížek | 76

Vyhledávání ve Windows není dokonalé, zkuste to 5× jinak

Vyhledávání ve Windows není dokonalé, zkuste to 5× jinak

** V macOS funguje vyhledávání Spotlight, ve Windows podobně propracovaná funkce chybí ** Alternativy se zaměřují na rychlé hledání souborů i externí zdroje ** Mnohé mohou vyhledávání ve Windows kompletně nahradit

18.  2.  2017 | Stanislav Janů | 58


Aktuální číslo časopisu Computer

Stavba 3D tiskárny

Výbava domácí elektrodílničky

Budoucnost 5G sítí

Velké testy microSD karet a vodních chladičů

Přehled mobilních tarifů

reklama
reklama