C++ Boost Regex 不保存捕获
Posted
技术标签:
【中文标题】C++ Boost Regex 不保存捕获【英文标题】:C++ Boost Regex doesn't save capture 【发布时间】:2015-06-03 18:36:41 【问题描述】:我正在尝试与网页通信,检索它的源代码,然后在输出文件中搜索和存储特定字符串(名称)。 这是我所做的:
#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"
没有“
【问题讨论】:
这与C无关。 【参考方案1】:matches[0]
是整个匹配的表达式。
第一个捕获组在matches[1]
。
【讨论】:
以上是关于C++ Boost Regex 不保存捕获的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中使用 boost:regex_error 时未定义符号?