gpt4 book ai didi

c - 使用 regex.h 在 c 中进行模式匹配/提取

转载 作者:行者123 更新时间:2023-11-30 17:18:43 24 4
gpt4 key购买 nike

我需要帮助在 C 中使用 regex.h 从字符串中提取子字符串。在此示例中,我尝试从字符串“telephone”中提取所有出现的字符“e”。不幸的是,我在识别这些字符的偏移量时遇到了困难。我在下面列出代码:

#include <stdio.h>
#include <regex.h>

int main(void) {
const int size=10;
regex_t regex;
regmatch_t matchStruct[size];

char pattern[] = "(e)";
char str[] = "telephone";

int failure = regcomp(&regex, pattern, REG_EXTENDED);
if (failure) {
printf("Cannot compile");
}

int matchFailure = regexec(&regex, pattern, size, matchStruct, 0);
if (!matchFailure) {
printf("\nMatch!!");
} else {
printf("NO Match!!");
}

return 0;
}

因此,根据 GNU 手册,当字符加括号时,我应该获取所有出现的“e”。但是,我总是只得到第一次出现的结果。

本质上,我希望能够看到类似的内容:

matchStruct[1].rm_so = 1;
matchStruct[1].rm_so = 2;

matchStruct[2].rm_so = 4;
matchStruct[2].rm_so = 5;

matchStruct[3].rm_so = 7;
matchStruct[3].rm_so = 8;

或者类似的东西。有什么建议吗?

最佳答案

请注意,您实际上不是将编译的正则表达式与 str(“电话”)进行比较,而是与纯文本模式进行比较。检查 regexec 的第二个属性。修复后,请继续执行“regex in C language using functions regcomp and regexec toggles between first and second match ”,其中已经给出了您问题的答案。

关于c - 使用 regex.h 在 c 中进行模式匹配/提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103139/

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