Regulární výraz

Started by pupac, December 22, 2014, 02:18:03 PM

Previous topic - Next topic

pupac

Ahoj, můžete mi prosím někdo poradit s tímto výrazem (příklad):  [bgx]{1,3}  problém je v tom, že nesmí dojít k opakování znaku. Díky.

pepak

Tomuto výrazu vyhovují všechny řetězce, které kdekoliv uvnitř obsahují písmeno b, g nebo x. Bez ukotvení nebo dalších komponent výrazu je ta část ve složené závorce nepodstatná, nepřidá ani neodebere žádné řetězce.

pupac

Díky za odpověď,
asi jsem se vyjádřil špatně, uvedený výraz je pouze příklad, který má demonstrovat požadavek neopakování znaku. Tak tedy přesněji: ^[bgx]{1,3}$
Samozřejmě aby byl požadavek splněk, bude výraz vypadat úplně jinak, jen nevím jak a ji-li to vůbec v možnostech regulárních výrazů.
Díky

pepak

No a co přesně je tedy požadavek? Přesně. Pod "požadavek neopakování znaku" si můžu představit cokoliv.

pupac

Uvedenému výrazu vyhovují všechny řetězce obsahující 1 až 3 z uvedených znaků ve všech možných kombinací pořadí, tedy i např. "ggg". Můj požadavek je regulární výraz, kterému vyhoví pouze takové řetězce z uvedené množiny, ve kterých se znaky neopakují, tedy přesně tyto řetězce: "bgx", "bxg", "gbx", "gxb", "xbg", "xgb", "bg", "gb", "bx", "xb", "gx", "xg", "b", "g", "x".

pepak

To podle mě nepůjde napsat o moc stručněji než výčtem možností. Dovedu si to představit pomocí look-aroundů, ale v kombinaci s různou délkou řetězců to nejspíš vyjde hůř než jednoduché ^(g|b|x|gb|gx|...)$

Quick Reply

Note: this post will not display until it has been approved by a moderator.

Name:
Email:
Verification:
Please leave this box empty:
Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:
Shortcuts: ALT+S post or ALT+P preview