创建单个正则表达式而不是多个正则表达式
Create a single regular expression instead of multiple expression
我试图创建一个正则表达式,匹配推到字符串向量上的字符串。是否可以创建一个单一的正则表达式来匹配和提取所有的"数值"值?
std::vector<std::string> strings;
strings.push_back("100/2");
strings.push_back("2");
strings.push_back("200/99");
strings.push_back("150/9*0");
std::regex rex1("(\d{1,3})(\/(\d{1,2})(\*(\d+)))"); // matches 150/9*0
std::regex rex2("(\d{1,3})(\/(\d{1,2}))"); // matches 200/99
for (size_t k = 0; k < strings.size(); k++)
{
std::smatch m;
std::regex_match(strings[k], m, rex1);
for (size_t i = 0; i < m.size(); i++)
std::cout << "match " << i << ": " << m[i] << std::endl;
}
^(\d{1,3})(\/(\d{1,2})(\*(\d+))?)?$
使后半部分可选(这样"2"仍然匹配),并使后半部分中的*0位可选。
结尾的$
是必要的,这样如果字符串确实包含可选部分,那么它们肯定仍然会匹配&被俘。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 有没有办法将不连续的捕获组组合到单个正则表达式中?
- 创建单个正则表达式而不是多个正则表达式
- 正则表达式IfThenElse -匹配单个闭括号或不匹配括号
- 使用正则表达式在Embarcadero的C++生成器中将文本拆分为单个单词