使用正则表达式进行子字符串匹配

时间:2018-08-25 11:18:35

标签: c++ regex

这是我的代码:

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

请告诉我,我要去哪里了。

1 个答案:

答案 0 :(得分:-1)

输出应为2。查看常规表达式如何应用。第一场比赛是

abc 101 0101bca10

文本之后是第一个匹配项

0101bca10

因此下一个匹配项是该片段中的“ 101”,在原始文本中为

abc1010 101 bca10