这是我的代码:
int main()
{
string s = "abc1010101bca10";
int c = 0;
string subject(s);
try {
regex re("10+1");
sregex_iterator next(subject.begin(), subject.end(), re);
sregex_iterator end;
while (next != end) {
smatch match = *next;
cout << match.str() << "\n";
c++;
next++;
}
}
catch (std::regex_error& e) {
cout << "Error in regex\n";
}
cout << c << "\n";
return 0;
}
我正在尝试在字符串中找到 1 {0} +1 的情况。
对于输入:abc1010101bca10
输出计数应为3,但上面的代码将其为2。
我认为sregex_iterator
在这里引起问题,因为它直接跳过了匹配的字符串。
当前输出:
101
101
2
应为:101 101 101 3
请告诉我,我要去哪里了。
答案 0 :(得分:-1)
输出应为2。查看常规表达式如何应用。第一场比赛是
abc 101 0101bca10
文本之后是第一个匹配项
0101bca10
因此下一个匹配项是该片段中的“ 101”,在原始文本中为
abc1010 101 bca10