( uid_2716 | 2010. 08. 07., szo – 06:51 )

Valóban, sokkal olvashatóbb. Ez a ?! ugye a negative lookahead? (Ahol a lookahead a non-capturing match?) Perl-ben még nem használtam, vagy csak nagyon régen, viszont a NEdit, amely a kedvenc editorom, támogatja ezeket, és ott szoktam ilyet írni, ha nagyon kell.

Azért érdekelt a dolog, mert a kérdés megoldhatónak látszott sima regex-szel is (*valódi* regex-szel, amelyben csak konkatenáció, alternatíva, zárójel, és Kleene-csillag szerepel -- na jó, van benne negatív charclass is, de az egy triviális rövidítés (a|b|c|d)-re). Egyszóval a kérdés elméleti szépsége ragadott meg :)

A perl regex engine-je nem (sem) valódi regex, mert már az illesztésben lehet visszahivatkozásokat használni, amihez veremgép kell. Mindenesetre a fenti kifejezés (ha jól értelmezem) valószínűleg nem veszi igénybe a vermet, tehát valódi véges determinisztikus (vagy nemdeterminisztikust szimuláló) automatát hoz létre. Kérdésedre, hogy van-e értelme ilyennel erőlködni: gyakorlati szempontból nincs, csak gondoltam, nézzük meg, mi van egy ilyen negative lookahead "mögött" -- a regex parser valójában egy olyan automatát generál (legalábbis nagyon valószínűen) a negative lookahead-ből, mint amilyet a fent látható kibontott regex ír le "közelebbről". Egészen tömören kifejezve: érdekes elméleti feladatnak tűnt, és szemléltetni kívántam vele, hogy a negative match valójában micsodás.