oktatas:programozas:pascal:szabalyos_kifejezesek
Tartalomjegyzék
Szabályos kifejezések
- Szerző: Sallai András
- Copyright © Sallai András, 2010, 2011, 2012, 2014
- Licenc: GNU Free Documentation License 1.3
- Web: http://szit.hu
Reguláris kifejezések
Regexpr unit
A Regexpr egy igencsak alapvető olyan unit, amely lehetővé teszi a reguláris kifejezések írását, hasonlóan a GNU regexpr-hez.
A regex lehetővé teszi, hogy egy mintát keressünk egy adott karaktersorozatban.
Az aktuális unit messze van a kész állapottól, és hiányzik belőle néhány e egyszerű POSIX szintaktika. Viszont még több Perl, Java, Ruby regex szintaktika hiányzik belőle.
A unit 4 függvényt tartalmaz:
- GenerateRegExprEngine – Ez a függvény összeállítja a regex mintát.
- RegExprPos – Megkeresi az adott mintát a egy karaktersorozatban.
- DestroyRegExprEngine – Felszabadítja az összeállított mintát
- RegExprEscapeStr – A szabályos kifejezés nyelvén megírt részeket elszeparálja, így regex helyett stringként értelmez.
A következőkben a négy függvény aláírását látjuk:
function GenerateRegExprEngine( regexpr: pchar; flags: tregexprflags ):TRegExprEngine;
procedure DestroyRegExprEngine( var regexpr: TRegExprEngine );
function RegExprPos( regexprengine: TRegExprEngine; p: pchar; var index: LongInt; var len: LongInt ):Boolean;
Állandók
A unitban néhány állandó is helyet kapott. Ezek rendre:
cs_allchars cs_digits cs_newline cs_whitespace cs_wordchars
cs_digits
Deklaráció:
const cs_digits: tcharset = [0..9];
cs_newline
Deklaráció
const cs_newline: tcharset = [] ; ];
cs_whitespace
Deklaráció
const cs_whitespace: tcharset = [ , ];
cs_wordchars
Deklaráció
const cs_wordchars: tcharset = [A..Z,a..z,_,0..9];
Típusok
pregexprentry tcharset TRegExprEngine tregexprentry tregexprentrytype tregexprflag tregexprflags
pregexprentry
Deklaráció
type pregexprentry = ^Tregexprentry;
tcharset
Declaration
type tcharset = set of Char;
TRegExprEngine
Declaration
type TRegExprEngine = record Data: pregexprentry; DestroyList: pregexprentry; Flags: tregexprflags; end;
tregexprentry
Declaration
type tregexprentry = record next: pregexprentry; nextdestroy: pregexprentry; end;
tregexprentrytype
Declaration
type tregexprentrytype = ( ret_charset, ret_or, ret_startpattern, ret_endpattern, ret_illegalend, ret_backtrace, ret_startline, ret_endline );
tregexprflag
Declaration
type tregexprflag = ( ref_singleline, ref_multiline, ref_caseinsensitive );
tregexprflags
Deklaráció
type tregexprflags = set of ( ref_singleline, ref_multiline, ref_caseinsensitive );
Példa
- main.pas
uses Regexpr; var r : TRegExprEngine; index, len : LongInt; begin r := GenerateRegExprEngine('autók',[]); if RegExprPos(r, 'törött autó van a garázsban', index, len) then WriteLn('Benne van') else WriteLn('Nincs benne'); DestroyregExprEngine(r); end.
Külső linkek
oktatas/programozas/pascal/szabalyos_kifejezesek.txt · Utolsó módosítás: 2019/08/22 10:01 szerkesztette: admin