Ответ 1
regex.h не предоставляет встроенную поддержку для замены строк, однако она предоставляет подвыражения/группы захвата, которые делают ее намного проще. Я предполагаю, что вы знакомы с компиляциями регулярных выражений и пропускаете выполнение и подвыражения регулярных выражений.
regexec() определяется следующим образом в regex.h(/usr/include/):
extern int regexec (const regex_t *__restrict __preg,
const char *__restrict __string, size_t __nmatch,
regmatch_t __pmatch[__restrict_arr],
int __eflags);
Первый, второй и последний аргументы - это регулярное выражение, строка, которая должна быть выполнена и флаги выполнения соответственно. Третий и четвертый аргументы используются для указания массива regmatch_t. Параметр regmatch_t состоит из двух полей: rm_so и rm_eo, которые являются индексами или смещениями, от начала и конца соответствующей области соответственно. Затем можно использовать индексы, а также memcpy(), memset() и memmove() из string.h для выполнения замены строк.
Я сделаю небольшой пример и опубликую его позже.
Удачи, и я надеюсь, что это помогло.