c++正则匹配失效

挨踢直男 2016-11-14 02:21:23
我把别的网站的内容抓过来, 想用正则匹配出我想要的, 然而怎么怎么写, regex_match返回的都是false

抓取网页的代码
CString httpGet(CString url) {
    USES_CONVERSION;
    CInternetSession s;
    CHttpFile *fileGet;
    try{
         fileGet = (CHttpFile*)s.OpenURL(url);
         DWORD status;
         fileGet->QueryInfoStatusCode(status);
        // cout << status;
    } catch (CInternetException *ex) {
        fileGet = NULL;
        ex->m_dwError;
        ex->Delete();
        s.Close();
        cout << "http请求异常";
        return L"";
    }
    CString strHtml = _T("");
    char sRecived[1024];
    while (fileGet->ReadString((LPTSTR)sRecived, 1024) != NULL) {
        strHtml += sRecived;
    }
    return strHtml;
    char *pChar = W2A(strHtml.GetBuffer());
    CString gb2312String = ConvertUTF8toGB2312(pChar, strlen(pChar));
 
    fileGet->Close();
    delete fileGet;
    s.Close();
 
    return gb2312String;
}


匹配测试
CString response = httpGet(L"http://www.163.com/");
string text =  cstr2str(response);
cout << text;
const regex reg(".*"); //这里怎么写都不起作用
cout << regex_match(text, reg);
while (true);
return 0;

求大神帮忙
...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2016-11-14
  • 打赏
  • 举报
回复
char sRecived[1024]; while (fileGet->ReadString((LPTSTR)sRecived, 1024) != NULL) { 从这两句就知道你的字符编码转换非常混乱, 可能你得到的数据, 已经不原来的样子, 正则匹配, 当然就可能出问题了 你最好是在正则匹配前, 输出你的字符串,看是不是你想要的样子, 然后再来解决 正则表达式的问题 正则表达式写错, 也会导致不能匹配. 最好是使用现成的<<正则表达式测试器>>, 比如RegexTester等等来测试下是否正确
paschen 版主 2016-11-14
  • 打赏
  • 举报
回复
注意字符集的一致,要就都用多字节,要就都用UNICODE
赵4老师 2016-11-14
  • 打赏
  • 举报
回复
推荐使用regtest软件。
lsfv001 2016-11-14
  • 打赏
  • 举报
回复
你是想所有字符? 应该这样写吧。(.|\n|\r)*

64,684

社区成员

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

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