#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来做到这一点。 如何让我的代码工作? 代码的目的是匹配正则表达式命名组中的每个数字。
答案 0 :(得分:1)
'test'
是一个字符文字。您想使用字符串文字:使用"test"
此外,使用编译器警告:
test.cpp|13 col 29| warning: multi-character character constant [-Wmultichar]
|| std::cout << result['test'].str() << std::endl; // here
<强> Live On Coliru 强>
#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;
start = result["test"].second;
}
}
打印
11
22
33
44