我正在尝试与网页进行通信,检索它的源代码,然后在输出文件中搜索并存储特定的字符串(名称)。 这是我做的:
#include <iostream>
#include <string>
#include <conio.h>
#include <boost/asio.hpp>
#include <boost/regex.hpp>
#include <fstream>
using namespace std;
ofstream o("out.txt");
int main()
{
boost::asio::ip::tcp::iostream s("www.lolsummoners.com", "http");
if(!s)
cout << "Could not connect to http://www.lolsummoners.com/\n";
s << "GET /ladders/eune HTTP/1.1\r\n"
<< "Host: www.lolsummoners.com\r\n"
<< "Accept: */*\r\n"
<< "Connection: close\r\n\r\n" ;
boost::regex rgx("/leagues/.*>(.+\\s*)</a></td>");
for(string line; getline(s, line); )
{
boost::smatch matches;
if(regex_search(line, matches, rgx ) )
{
o << matches[0] << '\n';
}
}
}
问题是,在我的输出文件中,它没有保存捕获,而是保存了整个内容:
/leagues/eune/64657">Kenachi</a></td>
我只希望它保存"Kenachi"
没有“
答案 0 :(得分:1)
WL
是整个匹配的表达式。
第一个捕获组位于matches[0]
。