Regulární výrazy

Co jsou to regulární výrazy?

Regulární výrazy představují prostředek umožňující identifikaci textových řetězců, například určitých znaků, slov nebo uspořádání znaků.  V rámci modulu Model Review jsou nejčastěji využívány k zajištění dodržování konvencí tvorby názvů nebo prohledávání poznámek v projektovém modelu za účelem zjištění specifických informací.

Zvláštní znaky

V regulárních výrazech se využívají zvláštní znaky, které umožňují vyšší míru flexibility při definování shod. Těmito „zvláštními znaky“ jsou:

+ * ? . [ ] ^ ( ) | \

Následující části obsahují popisy použití každého z těchto zvláštních znaků:

Tečka

Tečka (.) bude odpovídat jednomu libovolnému znaku.

Výraz

Význam

Odpovídá

Neodpovídá

390-.

Odpovídá řetězci „390-“, za kterým následuje libovolný znak.

390-A, 390-1, 390--

390-A1, 1390-1

Revize . vydána

Odpovídá řetězci „REVIZE“, za kterým následuje libovolný znak a poté řetězec „vydána“.

Revize A vydána

Revize 1 vydána

Revize # vydána

Revize A1 vydána

RevizeAvydána

Hranaté závorky

Hranaté závorky „[ ]“ definují třídu znaků, která zastupuje kterýkoli jednotlivý znak odpovídající znakům v závorce. V závorkách ztrácejí všechny zvláštní znaky svůj význam, s výjimkou znaku ^, který při použití na prvním místě v závorce znamená NEGACI a zakazuje tedy shodu se stanovenými znaky.

V hranatých závorkách lze používat i rozsahy.

Výraz

Význam

Odpovídá

Neodpovídá

[akm]

Jeden znak: buď a, k, nebo m

A, K, M

Akm, ak, G

[a-z]

Kterékoli písmeno

A, b, c, d

1, 2, -, #

[^akm]

Jeden znak, pokud to NENÍ písmeno a, k nebo m.

C, f, G,

Am (Protože se jedná o dvojici znaků.)

A, k, m

[0-9]

Jakákoliv číslice

0, 4, 7

A, #, z

[a-z][a-z]

Libovolná dvě písmena

AB, BC, DE

A (jen jedno písmeno)

A1

12

Hvězdička

Hvězdička „*“ následuje za výrazem a označuje, že se předcházející výraz může nulakrát či vícekrát opakovat.

Výraz

Význam

Odpovídá

Neodpovídá

Ab*c

Písmeno A, za kterým nenásleduje ani jednou písmeno b nebo za nímž následuje vícekrát písmeno b, s písmenem C na konci.

Ac

Abc

Abbbbbbbc

Bbb

Abcd

[a-z]*

Jakýkoli počet libovolných písmen (neboli pouze písmena &endash; ale zahrnuje i nulový počet písmen)

A

Bob

AAAAA

Ocel

<Blank> (Protože znak * může označovat i nulový počet výskytů.)

OCEL230

12

AA-##

Znaménko plus

Znaménko „+“ následuje za výrazem a označuje, že se předcházející výraz může jednou či vícekrát opakovat.

Výraz

Význam

Odpovídá

Neodpovídá

Ab+c

Písmeno A následované jedním či více písmeny b, s písmenem C na konci.

Abc

Abbbbbbbc

Ac

Bbb

Abcd

[a-z]+

Jakýkoli počet libovolných písmen (neboli pouze písmena)

Bob

AAAAA

Ocel

OCEL230

12

AA-##

<blank>

Otazník

Otazník (?) následuje za výrazem a označuje, že předcházející výraz byl volitelný.

Výraz

Význam

Odpovídá

Neodpovídá

Ab?c

Písmeno A, za kterým může volitelně následovat písmeno b, s písmenem C na konci.

Ac

Abc

Abbc

Abcd

390-[a-z][a-z]?

„390-“, za kterým následuje některé písmeno a druhé volitelné písmeno

390-A

390-AB

390-11

390-

390-ABC

Svislítko (svislá čára)

Znak „|“ funguje jako operátor NEBO mezi dvěma výrazy (obvykle uzavřenými v závorce).

Výraz

Význam

Odpovídá

Neodpovídá

(390|241)-[a-z]+

Buď číslo 390 nebo 241 následované znakem „-“ a jedním či více písmeny

390-A

241-A

241-AB

200-A

241

241-

Podle (MS2377|CS123)

Slovo „Podle“ následované buď řetězcem MS2377 nebo CS123

Podle MS2377

Podle CS123

Podle

Podle MS3222

 

390-([abc]|[123])

„390-“, za kterým následuje písmeno a, b či c NEBO číslice 1, 2 či 3

390-A

390-3

390-F

390-

Zpětné lomítko rušící význam zvláštních znaků

V případě potřeby skutečného vyhledávání znaku, který patří do skupiny zvláštních znaků, lze umístěním zpětného lomítka před příslušný zvláštní znak zajistit, aby modul Model Review zacházel s tímto znakem tak, jako s běžnými znaky bez zvláštního významu.

Výraz

Význam

Odpovídá

Neodpovídá

[0-9]\+

Číslice následovaná znakem „+“

1+

2+

1

A

1+1

Co\?

Výraz „Co“, za kterým následuje otazník

Co?

Copak se děje?

Oddělovací znak typu Začíná na/Končí na

Při práci s modulem Model Review se často setkáte s potřebou vyjádření konkrétní hodnoty na začátku nebo konci řetězce. Tato syntaxe představuje rozdíl pro uživatele, kteří jsou zvyklí používat regulární výrazy „vyhledávacího“ stylu. Doporučený postup je použití znaku “.*“ nebo „.+“ na začátku nebo na konci výrazu, které značí možnost „Začíná“ nebo „Končí“.

Výraz

Význam

Odpovídá

Neodpovídá

390-.*

Začíná na „390-“ (končí čímkoliv &endash; včetně prázdného místa).

390-1

390-111

1390-1

390-.+

Začíná na „390-“ (a končí čímkoliv, musí se ale jednat alespoň o jeden znak).

390-1

390-111

1390-1

390-

.*-[a-z]

Končí na „-“ a některé písmeno (začíná čímkoliv &endash; včetně prázdného místa).

Revize-A

Rev-A

-A

Revize-A1

Rev-1

123

-1

.+-[a-z]

Končí na „-“ a některé písmeno (začíná čímkoliv, musí se ale jednat alespoň o jeden znak).

Revize-A

Rev-A

Revize-A1

Rev-1

123

-1

-A

Sestavování komplexních výrazů

Používání regulárních výrazů představuje velmi účinnou, i když někdy poněkud složitou, metodu vyhledávání (porovnávání) textu. Abyste byli schopni vyřešit i složitější požadavky, bude možná potřeba naučit se dobře kombinovat více různých výrazů a vytvářet komplexní výrazy.

Několik příkladů komplexních výrazů:

Výraz

Význam

Odpovídá

Neodpovídá

[0-9]+[-]?[0-9]+

Číslice s nepovinnou pomlčkou uprostřed

123-45

12345

12A32

1232-A

A

.*[^_]

Nemůže končit podtržítkem (_).

123324

ČÁST1

12343_

(390|231)-[a-z0-9]+-[0-9]+

Číslo 390 nebo 231 následované znakem „-“, alfanumerickou částí s nejméně jedním znakem, poté znakem „-“ a alespoň jednou číslicí.

390-moječást-1

231-závorka-99

120-moječást-1

380- -