使用boost正则表达式提取所有以短划线分隔的数字
extract all dash separated digits using boost regex
我想使用boost regex从c++中的字符串中提取所有以短划线分隔的数字(如232-65)我用这个图案
\d*-\d*
但是仅检测到第一匹配。我应该怎么做才能提取所有匹配的模式。
示例输入:
"2 1 5-25 37 42 43 53 69-119 123-514"
输出只有5-25,但必须是5-25 69-119 123-514
我的样本代码是
cmatch res;
boost::regex port("\d*-\d*");
regex_search(s,res, port);
for (unsigned int i = 0; i < res.size(); ++i) {
cout << res[i] << endl;
}
这适用于C++11,但您应该能够用boost::
替换std::
,使其与Boost 一起工作
std::string s = std::string("2 1 5-25 37 42 43 53 69-119 123-514");
std::regex port("\d*-\d*");
std::sregex_token_iterator iter(s.begin(), s.end(), port);
std::sregex_token_iterator end;
for(; iter != end; ++iter)
{
std::cout << iter->str() << std::endl;
}
取自Boost C++正则表达式-如何获得多个匹配
如果你想使用const char*
,它应该是:
const char *s = "2 1 5-25 37 42 43 53 69-119 123-514";
std::regex port("\d*-\d*");
std::cregex_token_iterator iter(s, s + strlen(s), port);
std::cregex_token_iterator end;
for(; iter != end; ++iter)
{
std::cout << iter->str() << std::endl;
}
您希望在正则表达式中嵌入带括号的"子表达式",这些表达式将在匹配过程中提取。阅读boost页面,搜索匹配的子表达式。。。。
相关文章:
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 分隔整数 (C++) 的数字
- 如何从文件中读取用空格分隔的数字
- C ++正则表达式允许用点分隔的数字
- 读取以逗号分隔的数字,并将其写入以制表符分隔的文件
- C++ 从文件中读取 int,每个数字用逗号分隔
- 我如何使用CIN输入整数,每个数字都被逗号分隔
- 如何从逗号分隔的数字对中填充 2 个向量 C++.
- 为什么我可以在 C++ 中用撇号分隔数字,但不能用 C 分隔数字
- 用字符分隔数字
- 逗号分隔的数字在模拟器上正确显示,但在iPad上没有显示
- 在 cpp 中使用 getline 输入数组中的空格分隔数字
- 给定分隔成数组元素的数字,如何在 int 中重新组合数字
- 如果字符串中没有空格,如何解析带有数字和字符的字符串并分隔数字和字符
- 扫描以空格分隔的数字
- 解析逗号分隔的数字(C++)
- C++ - 如何将空格分隔的数字输入数组
- 递增由不同分隔符分隔的字符数组中的数字
- 解析来自 getline 的空格分隔数字
- 如何在C或c++代码中分隔数字常量(例如10,000)中的数字