在VC7用atl库开发正则表达式的程序,高手请指点!高分相送
我用vc7写了一个正则表达式程序,我用微软的测试器测试时正常,可是用程序就是不对。其代码如下:请高手给点指点,在此不胜感谢!
void CRegExpTestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CAtlRegExp<> reUrl;
//REParseError status = reUrl.Parse("({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?");
REParseError status = reUrl.Parse("http://sports\.sina\.com\.cn/\w/\d{4}-\d{2}-\d{2}/\d+.shtml");
if(REPARSE_ERROR_OK != status)
return;
CString strUrl;
GetDlgItem(IDC_EDIT1)->GetWindowText(strUrl);
CAtlREMatchContext<> mcUrl;
if (!reUrl.Match(strUrl, &mcUrl))//http://search.microsoft.com/us/Search.ASP?qu=atl&boolean=ALL#results
return;
for(UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups; ++nGroupIndex)
{
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);
ptrdiff_t nLength = szEnd - szStart;
CString str;
str.Format("%d: \"%.*s\"\n", nGroupIndex, nLength, szStart);
AfxMessageBox(str);
}
}