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.
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.
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
No a co přesně je tedy požadavek? Přesně. Pod "požadavek neopakování znaku" si můžu představit cokoliv.
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".
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|...)$