我需要帮助在C中使用regex.h从字符串中提取子字符串。 在这个例子中,我试图提取所有出现的字符' 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(®ex, pattern, REG_EXTENDED);
if (failure) {
printf("Cannot compile");
}
int matchFailure = regexec(®ex, pattern, size, matchStruct, 0);
if (!matchFailure) {
printf("\nMatch!!");
} else {
printf("NO Match!!");
}
return 0;
}
所以根据GNU的手册,我应该得到所有'&#39; e&#39;当一个字符括起来时。但是,我总是只有第一次出现。
基本上,我希望能够看到类似的内容:
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;
或沿着这些方向的东西。有什么建议吗?
答案 0 :(得分:0)
请注意,您实际上并未将编译的正则表达式与str
(&#34;电话&#34;)进行比较,而是将您的纯文本pattern
进行比较。检查您的第二个属性regexec
。修复后,例如进入&#34; regex in C language using functions regcomp and regexec toggles between first and second match&#34;已经给出了你问题的答案。