Pepak.net Forum

Volná diskuse => Volná diskuse => Topic started by: pupac on December 22, 2014, 02:18:03 PM

Title: Regulární výraz
Post by: pupac on December 22, 2014, 02:18:03 PM
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.
Title: Re: Regulární výraz
Post by: pepak on December 24, 2014, 07:50:19 PM
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.
Title: Re: Regulární výraz
Post by: pupac on December 26, 2014, 08:57:04 PM
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
Title: Re: Regulární výraz
Post by: pepak on December 28, 2014, 07:58:45 AM
No a co přesně je tedy požadavek? Přesně. Pod "požadavek neopakování znaku" si můžu představit cokoliv.
Title: Re: Regulární výraz
Post by: pupac on December 28, 2014, 03:03:07 PM
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".
Title: Re: Regulární výraz
Post by: pepak on December 28, 2014, 03:23:03 PM
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|...)$