uzycie regexu w c

0

Cześć,
próbuje użyć regexu w c. Chodzi mi o wyłapanie "-write [jakaś liczba] "[jakiś tekst]"". Zrobiłem to tak:

regex_t writeRegex;
int writeReg;

writeReg = regcomp(&writeRegex, "-\swrite\s[\d]+\s\"[^\"]+\"", 0);
if (writeReg) {
    fprintf(stderr, "Could not compile regex\n");
    exit(1);
}

writeReg = regexec(&writeRegex, bufor, 0, NULL, 0);

if(!writeReg){
printf("PASUJE");
}
else{
printf("NIE PASUJE");
} 

jednak jak przekaże do zmiennej bufor "-write 5 "komunikat", to program sygnalizuje, że ten łańcuch nie pasuje do regexu. Proszę o pomoc.

0

Poeksperymentuj tutaj: https://regex101.com

1

back slash w stringu c ma specjalne znaczenie, wiec nie można wklejać bezpośrednio wyrażenia regularnego do literału.
To powinno wyglądać tak:

regex_t writeRegex;
int writeReg;

writeReg = regcomp(&writeRegex, "\\bwrite\\s+(\\d+)\\s\"([^\"]+)\"", 0);
if (writeReg) {
    fprintf(stderr, "Could not compile regex\n");
    exit(1);
}

writeReg = regexec(&writeRegex, bufor, 0, NULL, 0);

if(!writeReg){
     printf("PASUJE");
}
else{
     printf("NIE PASUJE");
} 

Jeśli są błędy z użyciem biblioteki to sorry, ale nie znam jej.

W C++11 jest łatwiej bo wprowadzono raw string, może do nowego C też je wprowadzono?

char regExpString[] = R"re(\bwrite\s+(\d+)\s"([^"]+)")re";

1 użytkowników online, w tym zalogowanych: 0, gości: 1