首页 > 解决方案 > C++ 多正则表达式条件语法

问题描述

换句话说,C++ 正则表达式中是否有 AND 运算符?通常我会使用 | 但它不起作用

例如,我只想返回 2 位和 1 位数字

string subject("This 91 - 500abc7 is a 5 test");
regex re("\\d\\d");

这仅返回 2 位数字,如何添加第二个条件以匹配单个数字“\d”

结果应该是:91 - 7 - 5

标签: c++regex

解决方案


它不是您想要 1 或 2 位数字的“和” (\d|\d\d)

但正则表达式有编号重复的符号:\d{1,2}

问题是\d{1,2}匹配50500.

所以你可以添加(负面)向前/向后看:

(?<!\d)\d{1,2}(?!\d)(1 位或 2 位数字前后没有其他数字)

所以std::regex re(R"((?<!\d)\d{1,2}(?!\d))");


推荐阅读