Я пытаюсь сопоставить строку "123,1234", используя regex.h. Следующая схема делает работу:
"^[0-9]\{1,\},[0-9]\{1,\}$"
Если я даю это в качестве аргумента командной строки, он работает нормально. Но когда я использую его внутри кода C, он не работает. Возможно, потому что идентифицирует обратную косую черту как escape-символы.
Пример кода:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <regex.h>
int main (int argc, char * argv[]){
regex_t regex;
int reti;
char msgbuf[100];
char * string, * pattern;
string = "123,1234";
pattern = "^[0-9]\{1,\},[0-9]\{1,\}$";
if(regcomp(®ex, pattern, 0))
{
fprintf(stderr, "Could not compile regex\n");
exit(107);
}
if(!(reti = regexec(®ex, string, 0, NULL, 0)))
{
printf("MATCH\n");
}
else if(reti == REG_NOMATCH)
{
printf("NO MATCH\n");
}
else
{
regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(107);
}
regfree(®ex);
return 0;
}
Как я могу решить это?