ugrás a tartalomhoz

Szabályos kifejezés [regex] "karakterosztály" létezik. És "kifejezésosztály"?

laji · 2010. Jún. 27. (V), 15.41
(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?
 
1

Úgy tűnik, megvan a megoldás

laji · 2010. Jún. 27. (V), 21.32
Szögletes (írásjelosztályt képző) zárójelek helyett kerek zárójelek közt sorolom fel a leheséges közbülső kifejezéseket, VAGY jellel elválasztva - így ugyanazt a hatást kapom. A nyitó zárójel után közvetlenül pedig kizárom, hogy visszahivatkozás [backreference] legyen belőle, így nem zavarja meg a továbbiakat.

szép(?:</[ibu]>|\.{3}|”)*tájak