我正在使用 Dev-c++ IDE 编译我的 C (WIN32 API) 程序。
我正在使用http://gnuwin32.sourceforge.net/packages/regex.htm提供的正则表达式库
我正在使用此文档作为参考,上述站点也提供了相同的文档... http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.html
以下是代码:
#include <cstdlib>
#include <iostream>
#include <sys/types.h>
#include <regex.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
int a;
regex_t re;
char str[128] = "onces sam lived with samle to win samile hehe sam hoho sam\0";
regmatch_t pm;
a = regcomp(&re,"sam", 0);
if(a!=0)
{
puts("Invalid Regex");
getch();
return 0;
}
a = regexec(&re, &str[0], 1, &pm, REG_EXTENDED);
printf("\n first match at %d",pm.rm_eo);
int cnt = 0;
while(a==0)
{
a = regexec(&re, &str[0] + pm.rm_eo, 1, &pm, 0);
printf("\n next match %d",pm.rm_eo);
cnt++;
if(cnt>6)break;
}
getch();
return EXIT_SUCCESS;
}
while 循环无限显示匹配字符串的第一个和第二个结束位置,而不是进一步。
我使用 cnt 变量检查了 6 圈,然后我打破循环以停止无限运行。
输出是:
9点第一场比赛
下一场比赛 15
下一场比赛 9
下一场比赛 15
下一场比赛 9
下一场比赛 15
我在这里想念什么?