Szabályos kifejezés [regex] "karakterosztály" létezik. És "kifejezésosztály"?
(Ha rossz helyet választottam, kérem áthelyezni. Köszönöm.)
Szabályos kifejezéssel keresek több szót. (PowerGREP-et használok.) Sok esetben előfordul, hogy a két szó közt lehet néhány olyan kifejezés, amit "megengedek", nem érdekel. Ha ezek nem kifejezések, hanem betűk vagy jelek lennének, egyszerű lenne a dolog. Például, ha keresem az egymást követő "szép" és "tájak" szavakat, s megengedem, hogy legyen köztük vessző, szóköz, kettőspont, akár több is ezek közül, s bármilyen sorrendben:
szép[, ;]*tájak
Ez megtalálja a következők bármelyikét:
széptájak
szép, tájak
szép;, ;tájak
stb.
De mi a helyzet, ha nem egyjegyű megengedett lehetőségekről van szó (melyeket felsorolhatok a karakterosztályon belül), hanem többjegyűekről? Vagyis, a fentebbi példát folytatva, a "szép" és a "tájak" közt ugyanilyen szabadon (tehát bármilyen sorrendben, akár ismétlődve is) a következőket szeretném "megengedni":
</[ibu]>
\.{3}
”
Vagyis: hálós záró címke [html closing tab], hárompont (ha ez a neve), záró idézőjel. Ezek többjegyűek, kifejezések - tehát nem tehetem őket szögletes zárójelek közé, ezáltal írásjelosztályt [character class] képezve. Ez csak akkor lenne lehetséges, ha az írásjelosztály mintájára létezne "kifejezésosztály" is - de tudtommal ilyen nincs.
Igaz, vagylagos megoldással fel lehet sorolni a legfőbb kb. 5-10 csoportosítási lehetőséget, de ez elég durva. S ráadásul minden további újabb megengedett kifejezés (pl. ha belevenném a felkiáltójelet is) megsokszorozná a lehetőségeket.
Van erre valamilyen szép megoldás?
■ Szabályos kifejezéssel keresek több szót. (PowerGREP-et használok.) Sok esetben előfordul, hogy a két szó közt lehet néhány olyan kifejezés, amit "megengedek", nem érdekel. Ha ezek nem kifejezések, hanem betűk vagy jelek lennének, egyszerű lenne a dolog. Például, ha keresem az egymást követő "szép" és "tájak" szavakat, s megengedem, hogy legyen köztük vessző, szóköz, kettőspont, akár több is ezek közül, s bármilyen sorrendben:
szép[, ;]*tájak
Ez megtalálja a következők bármelyikét:
széptájak
szép, tájak
szép;, ;tájak
stb.
De mi a helyzet, ha nem egyjegyű megengedett lehetőségekről van szó (melyeket felsorolhatok a karakterosztályon belül), hanem többjegyűekről? Vagyis, a fentebbi példát folytatva, a "szép" és a "tájak" közt ugyanilyen szabadon (tehát bármilyen sorrendben, akár ismétlődve is) a következőket szeretném "megengedni":
</[ibu]>
\.{3}
”
Vagyis: hálós záró címke [html closing tab], hárompont (ha ez a neve), záró idézőjel. Ezek többjegyűek, kifejezések - tehát nem tehetem őket szögletes zárójelek közé, ezáltal írásjelosztályt [character class] képezve. Ez csak akkor lenne lehetséges, ha az írásjelosztály mintájára létezne "kifejezésosztály" is - de tudtommal ilyen nincs.
Igaz, vagylagos megoldással fel lehet sorolni a legfőbb kb. 5-10 csoportosítási lehetőséget, de ez elég durva. S ráadásul minden további újabb megengedett kifejezés (pl. ha belevenném a felkiáltójelet is) megsokszorozná a lehetőségeket.
Van erre valamilyen szép megoldás?
Úgy tűnik, megvan a megoldás
szép(?:</[ibu]>|\.{3}|”)*tájak