Tartalomjegyzék
A regex.h használata
- Szerző: Sallai András
- Copyright © Sallai András, 2011
- Licenc: GNU Free Documentation License 1.3
- Web: http://szit.hu
Használt függvények
Négy függvényt használhatunk:
int regcomp(regex_t *, const char *, int); int regexec(const regex_t *, const char *, size_t, regmatch_t[], int); size_t regerror(int, const regex_t *, char *, size_t); void regfree(regex_t *);
Regcomp
Ez a függvény előkészíti a regexec hívást. Meg kell adjuk a paraméterként a mintát és egyéb kapcsolókat. A kapcsolók a következők lehetnek:
REG_EXTENDED = Kiterjesztett szabályos kifejezések használata REG_ICASE = Kis- és nagybetű nem különbözik REG_NOSUB = Jelentés csak a sikerről/sikertelenségről a regexec() esetén REG_NEWLINE = Az új sor után is olvas
Regexec
Összehasonlítja a megadott szöveget a megadott mintával. Ha a minta egyezik 0 eredményt kapunk, ha nem akkor REG_NOMATCH állandóval tér vissza. REG_ENOSYS értékkel tér vissza ha a függvény nem támogatott. A következő jelzők használhatók:
REG_NOTBOL = ^ nem szöveg vége speciális karaktere helyett REG_NOTEOL = $ nem szöveg vége speciális karakter helyett
Regerror
Értelmezi a regexec és a regcomp visszatérő hibakódokat és egy szöveget add helyettük. Sikeres végrehajtás esetén megadja a visszaadott szöveg hosszát, ellenkező esetben 0-val.
Regfree
A regex számára lefoglalt memóriát felszabadítja.
Példa
- main.c
#include <sys/types.h> #include <regex.h> int match(const char *szoveg, char *minta) { int status; regex_t re; if(regcomp(&re, minta, REG_EXTENDED|REG_NOSUB) != 0) return 0; status = regexec(&re, szoveg, (size_t)0, NULL, 0); regfree(&re); if(status != 0) return 0; return 1; }
Minta megadása
char *minta = "([0-9]{1,3}\\.){3}[0-9]{1,3}";
Számok megadása szögletes zárójellel. Egy tartományt határozunk meg:
[0-9]
0 és 9 között bármely számjegy lehet. Ha csak ennyit adunk meg, az illeszkedéshez elég a karaktersorozatban egyetlen számjegy ami bárhol lehet.
Ha a számnak a sor elején kell lennie:
^[0-9]
Ha a számnak a sor végén kell lennie:
[0-9]$
Ha a sor eleji és a sor végi illeszkedést is jelzem:
^[0-9]$
Akkor csak egyetlen egy számjegyű számra fog illeszkedni.
Kapcsos zárójellel megadhatjuk hány darabot várunk az előtte megadott mintából.
^[0-9]{3}$
A példában három számjegyet várunk.
Három „a” betűre illeszkedés például:
a{3}
Escape szekvenciák megadása a kettő darab visszaperjellel történik.
\\.
Például a pont megadása. Pont működik Escape szekvencia nélkül is.