Navigace:  MobilChange™ - Dokumentace > Administrace a funkčnost MobilChange™ > Administrátorské nástroje > Konfigurátor DATASYS UMS > Konfigurátor DATASYS UMS > Přílohy >

Regulární výrazy

Předchozí stránkaDomůDalší stránka

Stručný úvod do regulárních výrazů se zvláštním přihlédnutím k jejich aplikaci v prostředí systému MobilChange

Regulární výraz (dále jen regexp, z angl. Regular Expression) je rozšířením klasické "hvězdičkové konvence“ z MS DOSu. Umožňuje zadat podstatně složitější výraz a hlavně najít jeho části a ty pak použít v dalším zpracování.

MobilChange používá regulární výrazy na mnoha místech, například v konfiguraci routingu odchozích i příchozích zpráv. Tento kapitola vysvětluje základy používání regulárních výrazů.

poznamka_24Poznámka: Regulární výraz se aplikuje na normalizované telefonní číslo, tj. bez "+" na začátku.

 


listSpeciální znaky

listHledání speciálních znaků

listSložitější výrazy


 

Speciální znaky

V klasickém MS DOSu jsou při používání hvězdičkové konvence definovány dva speciální znaky: hvězdička (libovolný počet libovolných znaků) a otazník (jeden libovolný znak). V regexpu je podobných znaků víc:

. - tečka

Tečka zastupuje jeden libovolný znak. Stejná funkce jako DOSový otazník.

* - hvězdička

Libovolný (i nulový) počet opakování předešlého znaku (nebo skupiny znaků). Ekvivalent dosové hvězdičky by se tedy napsal jako .* (libovolný počet opakování libovolného znaku).

+ - plus

Libovolný nenulový počet opakování předešlého znaku (nebo skupiny znaků). Tj. chová se jako hvězdička, ale hledaný znak/sekvence znaků se musí vyskytnout alespoň jednou.

? - otazník

Předchozí znak (či skupina znaků) je volitelný -- může ale nemusí se vyskytnout.
AHOJ? bude splněno na slovech AHOJ i AHO.

[] - hranaté závorky

Hranaté závorky ohraničují složitější definici jednoho znaku. Do nich se zapíše, které znaky jsou na dané pozici povoleny, a to buď výčtem, nebo intervalem:

[123] povoluje na dané pozici jednu z číslic 1, 2 nebo 3 .

[2-6] povoluje na dané pozici jednu z číslic 2 až 6.

V jedněch závorkách může být několik podmínek, tj. [2-6ABCG-L] povoluje na této pozici číslice 2 až 6 nebo jedno z písmen A B C G H I K L.

^ - stříška

Stříška má dva různé významy. Na začátku regexpu značí, že se regexp musí "trefit“ hned od začátku testovaného výrazu (jinak je platný, i když najde výskyt třeba až uprostřed). V hranatých závorkách pak značí, že následující znak se na dané pozici nesmí objevit. Regexp [^a] tedy říká, že na dané pozici může být libovolný znak kromě "a“.

$ - dolar

Dolar na konci regexpu je podobný jako stříška na jeho začátku. Říká, že regexp se musí rozvinout až do konce testovaného textu.

() - kulaté závorky

Kulaté závorky ohraničují "podvýraz“. Ten je použitelný v dalším zpracování a je jej možno použít též ke složitějšímu hledání.

priklad_24Příklad: bana(na)* odpovídá slovům bana, banana, bananana, banananana atd.

Hledání speciálních znaků

Jestliže se v regexpu mají hledat speciální znaky, stačí je uvést prefixem \ (zpětné lomítko). V hranatých závorkách jako speciální znak funguje jen ^ a -, všechny ostatní není třeba uvádět \.

Složitější výrazy

Všechny výše uvedené regexpy se dají zkompletovat do složitějších výrazů. Zde je několik ukázek:

^#pizza (.*)$

Tento regexp bude platný pro všechny texty začínající textem #pizza následovaným jednou mezerou. Všechny následující znaky až do konce výrazu jsou uloženy v podvýrazu číslo 1, který je možno použít v dalším zpracování.

^#([^ ]+) (.*)$

Tento regexp bude platný pro všechny texty začínající textem znakem #, za kteým následuje libovolná sekvence znaků, jedna mezera a další libovolná sekvence znaků. Přičemž výsledek podvýrazu [^ ]+ (sekvence libovolných znaků až do mezery) bude uložen jako podvýraz číslo 1, druhý podvýraz .* (sekvence libovolných znaků) bude uložen jako podvýraz 2.

^42060[34][0-9]+,^4616$

Toto najde všechny čísla sítě T-mobile CZ:420603xxxxxx, 420604ccccccc, 4616. Nenajde však čísla 420602zzzzzzz (dvojka na šestém místě nevyhovuje výrazu [34]) ani 420603 (není splněn výraz [0-9]+).