Мне нужно включить в мой код C компилятор / исполнитель регулярных выражений POSIX ERE.Я остановился на собственной библиотеке regex.h, которая выглядит примерно так:
#include <regex.h>
bool
match_posix_regex(const char *pattern, const char *str){
regex_t regex;
int reti;
reti = regcomp(®ex, pattern, REG_EXTENDED);
if(reti){
printf("Could not compile the regex\n");
return false;
}
reti = regexec(®ex, str, 0, NULL, 0);
if(!reti){
return true;
}
else if (reti == REG_NOMATCH){
return false;
}
else{
printf("ERROR in regex execution\n");
return false;
}
}
До меня дошло, что эта реализация включает в себя поддержку обратных ссылок.Насколько я понимаю, стандарты POSIX ERE не поддерживают обратные ссылки, однако многие реализации этих стандартов поддерживают.Глядя на regex.h docs , я не вижу возможности отключить эту функцию.
Я не хочу включать поддержку обратных ссылок, поскольку это не так.включены в стандарты, и, кроме того, это может привести к катастрофическому откату, как описано здесь .
Есть ли способ, которым я могу скомпилировать и запустить регулярное выражение в C, которое соответствует стандартам POSIX ERE и включает ли не обратную ссылку в качестве функции?