正则表达式为什么匹配不到Group(3)?

sb3day 2012-04-15 05:35:25
bool TestRegex(char *lpLink)
{
string strLink(lpLink);
static CRegexpT<char> rgxField("event:(.*)\\|(\\d+)\\|(.*)", IGNORECASE);
MatchResult matchresult = rgxField.Match(strLink.c_str());
bool bRet = matchresult.IsMatched()!=0;

if(bRet)
{
printf("TestRegex MaxGroupNumber=%d:\n",matchresult.MaxGroupNumber());
for(int i=1;i<matchresult.MaxGroupNumber();i++)
{
int nStart = matchresult.GetGroupStart(i);//event:release|2|
int nEnd = matchresult.GetGroupEnd(i);

string strType = strLink.substr(nStart, nEnd-nStart);
printf("%s\n",strType.c_str());
}
}

return bRet;
}

TestRegex("event:release|4|9a631c7d-5c54-43e0-99a6-76f89bf7910e|80709283-ee51-45ef-9b20-a46ef4d1a570");

我用"event:(.*)\\|(\\d+)\\|(.*)"为什么匹配不到"event:release|4|9a631c7d-5c54-43e0-99a6-76f89bf7910e|80709283-ee51-45ef-9b20-a46ef4d1a570"
的Group(3)呢?要怎么解决?我用的是跨平台的deelx正则库
...全文
48 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sb3day 2012-04-18
  • 打赏
  • 举报
回复
是i<=matchresult.MaxGroupNumber();我写错了
evencoming 2012-04-15
  • 打赏
  • 举报
回复
被 .*坑过多次,于是再不敢用 .*了
evencoming 2012-04-15
  • 打赏
  • 举报
回复
"event:([^|]*)\\|(\\d+)\\|([^|]*)\\|([^|]*)"

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧