gpt4 book ai didi

c - 正则表达式.h : print the subexpression

转载 作者:行者123 更新时间:2023-12-02 09:15:07 25 4
gpt4 key购买 nike

我想使用 C 中的 regex.h 库从表达式中提取子字符串。这是代码

#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”,但我想确保它位于字符串之间姓名:和:姓名。类别是随机的,它动态变化,这是我唯一需要的部分。怎样才能一次性拿到呢?是否可以使用反向引用来存储我需要的值?

最佳答案

您必须指定 nmatch = 2,以便 pmatch[0] 包含整个匹配项和 pmatch[ 1]您想要的子匹配。

需要更改的代码:

size_t     nmatch = 2;
regmatch_t pmatch[2];

...
pmatch[1].rm_eo - pmatch[1].rm_so, &string[pmatch[1].rm_so],
pmatch[1].rm_so, pmatch[1].rm_eo - 1);
...

关于c - 正则表达式.h : print the subexpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com