首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-23 
正则表达式为什么匹配不到Group(3)?C/C++ codebool TestRegex(char *lpLink){string strLink(lpLink)stat

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

C/C++ code
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正则库

[解决办法]
"event:([^|]*)\\|(\\d+)\\|([^|]*)\\|([^|]*)"
[解决办法]
被 .*坑过多次,于是再不敢用 .*了

热点排行