Я хочу извлечь подстроку из моего выражения, используя библиотеку regex.h на C. Вот код
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
regex_t preg;
char *string = "Random_ddName:cateof:Name_Random";
char *pattern = ".*Name:\\(.*\\):Name.*";
int rc;
size_t nmatch = 1;
regmatch_t pmatch[1];
if (0 != (rc = regcomp(&preg, pattern, 0))) {
printf("regcomp() failed, returning nonzero (%d)\n", rc);
exit(EXIT_FAILURE);
}
if (0 != (rc = regexec(&preg, string, nmatch, pmatch, 0))) {
printf("Failed to match '%s' with '%s',returning %d.\n",
string, pattern, rc);
}
else {
printf("With the whole expression, "
"a matched substring \"%.*s\" is found at position %d to %d.\n",
pmatch[0].rm_eo - pmatch[0].rm_so, &string[pmatch[0].rm_so],
pmatch[0].rm_so, pmatch[0].rm_eo - 1);
}
regfree(&preg);
return 0;
}
Я хочу извлечь строку "cateof", но я хочу быть уверен, чтонаходится между строками Name: и: Name.Cateof является случайным, он изменяется динамически, и это единственная часть, которая мне нужна.Как я могу получить это сразу?Можно ли использовать обратные ссылки для хранения нужного мне значения?