Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:c:regularis_kifejezesek

< C

A regex.h használata

  • Szerző: Sallai András
  • Copyright © Sallai András, 2011
  • Licenc: GNU Free Documentation License 1.3

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.

oktatas/programozas/c/regularis_kifejezesek.txt · Utolsó módosítás: 2019/08/21 17:49 szerkesztette: admin