C ++ Boost Regex不保存捕获

时间:2015-06-03 18:36:41

标签: c++ regex boost

我正在尝试与网页进行通信,检索它的源代码,然后在输出文件中搜索并存储特定的字符串(名称)。 这是我做的:

    #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"没有“

1 个答案:

答案 0 :(得分:1)

WL是整个匹配的表达式。

第一个捕获组位于matches[0]