我把別的網站的內容抓過來, 想用正則匹配出我想要的, 然而怎么怎么寫, 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;
求大神幫忙
uj5u.com熱心網友回復:
你VS的regex是不是有效,VS低版本的regex可能根本沒有實作。uj5u.com熱心網友回復:
visual studio 2015的
uj5u.com熱心網友回復:
vs2015的
uj5u.com熱心網友回復:
regex_match要求字串從頭到尾完全匹配,“.*”無法匹配換行符,而HTML正文中肯定會有換行符,所以匹配失敗。要在HTML中搜索匹配的子串,你需要的是regex_search而不是regex_match
uj5u.com熱心網友回復:
推薦使用regtest軟體。uj5u.com熱心網友回復:
自己寫過濾函式轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/119424.html
標籤:基礎類
