12.07.2013 Views

jegyzet gyomlált változata - Eötvös Loránd Tudományegyetem

jegyzet gyomlált változata - Eötvös Loránd Tudományegyetem

jegyzet gyomlált változata - Eötvös Loránd Tudományegyetem

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

lista utolsó elemeként kell írni, ha nem (karaktertartományt megadó) metakarakterként<br />

akarjuk értelmezni.<br />

4.5.2. Ismétlő operátorok<br />

Az elemi építőköveket a következő ismétlési operátorok egyike követheti:<br />

? Az előző tag opcionális, és legfeljebb egyszer illeszkedik.<br />

* Az előző tag nulla vagy több alkalommal illeszkedik.<br />

+ Az előző tag egy vagy több alkalommal illeszkedik.<br />

{n} Az előző tag pontosan n alkalommal illeszkedik.<br />

{n,} Az előző tag n vagy több alkalommal illeszkedik.<br />

{,m} Az előző tag legfeljebb m alkalommal illeszkedik.<br />

{n,m} Az előző tag legalább n de legfeljebb m alkalommal illeszkedik.<br />

4.5.3. Összetett reguláris kifejezések<br />

Az atomokat és az azokat követő ismétlési operátorokat együtt daraboknak (pieces) nevezzük.<br />

Az egyes darabok összefűzhetőek. Az összefűzött darabokat ágnak (branch)<br />

nevezzük. Az ág minden olyan karakterlánchoz illeszkedik, amely az ágat alkotó da-<br />

rabokhoz illeszkednek a sorrend megtartása mellett (logikai<br />

ÉS, de nem felcserélhető).<br />

Például az ab egy ág, amely az a és b atomokból áll, és illeszkedik az ” ablak” szó első<br />

két karakterére, vagy a ” baba” szó középső két betűjére.<br />

Két ág összekapcsolható a | infix operátorral; a kapott reguláris kifejezés minden<br />

karakterlánchoz illeszkedik, amelyikhez valamelyik ág illeszkedik (logikai VAGY).<br />

Az ismétlés ( ” hatványozás”) nagyobb precedenciájú, mint az összefűzés ( ” szorzás”),<br />

ami viszont a választóoperátornál (azaz |-nál) nagyobb precedenciájú ( ” összeadás”). Egy<br />

részkifejezés zárójelbe tehető, hogy felülbíráljuk a precedenciát. Például a ” baba” szónak<br />

csak az első két karakterére illeszkedik a ba* kifejezés, de az egész szóra illeszkedik a<br />

(ba)*.<br />

4.5.4. Visszahivatkozás<br />

A zárójeles kifejezések nemcsak az operátorok sorrendiségét szabályozzák, hanem a hivatkozhatunk<br />

is a zárójeles reguláris kifejezéssel illeszkedő mintára. A visszahivatkozást<br />

(backreference) \n jelöli, ahol n egy számjegy. Ez illeszkedik ahhoz a karakterlánchoz,<br />

amely a reguláris kifejezés ezt megelőző n-edik zárójeles alkifejezéshez illeszkedett. Például<br />

a (.a)\1 kifejezés illeszkedik az ” papa”, ” baba”, stb. párokra.<br />

61

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!