Если принудительно вводить только в POSIX (без pcre), вот небольшой отступление:
#include <regex.h>
#include <stdbool.h>
bool reg_matches(const char *str, const char *pattern)
{
regex_t re;
int ret;
if (regcomp(&re, pattern, REG_EXTENDED) != 0)
return false;
ret = regexec(&re, str, (size_t) 0, NULL, 0);
regfree(&re);
if (ret == 0)
return true;
return false;
}
Вы можете назвать это так:
int main(void)
{
static const char *pattern = "/foo/[0-9]+$";
/* Going to return 1 always, since pattern wants the last part of the
* path to be an unsigned integer */
if (! reg_matches("/foo/abc", pattern))
return 1;
return 0;
}
I весьма рекомендуем использовать PCRE, если он доступен. Но приятно это проверить и иметь какой-то откат назад.
Я извлек фрагменты из проекта, который в данный момент находится в моем редакторе. Это просто очень простой пример, но он дает вам типы и функции для поиска в случае необходимости. Этот ответ более или менее усиливает ответ Синана.