C++只提供 4 个锚点:

  • ^断言字符串的开头
  • $ 断言字符串的结尾
  • \b 断言\W 字符或字符串的开头或结尾
  • \B 断言\w 字符

比方说,我们想它的符号捕获一个数字 :

auto input = "+1--12*123/+1234"s;
smatch sm;

if(regex_search(input, sm, regex{ "(?:^|\\b\\W)([+-]?\\d+)" })) {

    do {
        cout << sm[1] << endl;
        input = sm.suffix().str();
    } while(regex_search(input, sm, regex{ "(?:^\\W|\\b\\W)([+-]?\\d+)" }));
}

实例

这里一个重要的注意事项是锚点不会消耗任何字符。