// Example program
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string strr("1.0.0.0029.443");
std::regex rgx("([0-9])");
std::smatch match;
if (std::regex_search(strr, match, rgx)) {
for(int i=0;i<match.size();i++)
std::cout << match[i] << std::endl;
}
}
这个程序应该写C++的正则表达式发现只有1分的比赛
1
0
0
0
0
2
9
4
4
3
但它写入
1
1
检查在这里http://cpp.sh/和视觉工作室,都同样的结果。
它为什么只找到2个匹配,为什么它们是相同的?
当我从这里了解答案,正则表达式搜索,在第一场比赛将停止,匹配变量保存必要的(子?)的字符串值,为其他的比赛继续(重复)。此外,由于它在第一场比赛中停止,所以只有在结果中使用子女比赛时,才会使用字母组合()
。
它为什么只放1场搜索比赛拖入匹配变量?它在第一场比赛中停止搜索? –
'\\ d'是'[0-9]' – AndyG
稍微短一点的替代方案,非常感谢您提供这些重要信息。 –