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 для замены строки.
Я приведу небольшой пример и опубликую его позже.
Удачи, и я надеюсь, что это помогло.