正则表达式为什么匹配不到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+)\\|([^|]*)\\|([^|]*)"
[解决办法]
被 .*坑过多次,于是再不敢用 .*了