【发布时间】:2015-06-21 16:46:20
【问题描述】:
#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
int main(){
regex rule("(?<test>\\d+)");
string str = "11.22.33.44";
boost::smatch result;
string::const_iterator start = str.begin();
string::const_iterator end = str.end();
while (regex_search(start, end, result, rule))
{
std::cout << result['test'].str() << std::endl;// here
start = result['test'].second;// it seems it work
}
getchar();
return 0;
}
为什么它不能正常工作? 我习惯于使用 PHP 来做到这一点。 我怎样才能使我的代码工作? 代码的目的是匹配正则表达式命名组中的每个数字。
【问题讨论】:
-
考虑到你没有描述你想要做什么,很难说为什么它“没有以正确的方式工作”......
-
有一个明确的理由来结束您的问题,因为它是
off-topic,因为why this code isn't working。社区无法猜测您想要做什么并调试您的代码。 -
除此之外是 C++,
'text'表示“t”,最好的做法是使用一些rx_前缀和匹配对象m_命名正则表达式对象,以便其可读。此外,最好在整个比赛结束时设置 new 开始位置,而不是捕获组的 > 0。(即。start = _m[0].second;)