如何确定是否捕获了正则表达式的可选部分
How to find out if an optional part of a regular expression is captured or not?
假设我有一段简单的正则表达式搜索代码:
boost::regex re("(\d+)(/(\d))?");
boost::smatch matches;
boost::regex_search(input_str, matches, re);
它在字符串中搜索类似123/2
或123
的内容。第二位和/是可选的
我想知道,如果/2
存在或不存在,如果存在,请将变量后面的第二个数字设置为变量,否则将变量设置为-1
我尝试使用matches.size()
,但无论第二部分是否存在,它总是相同的值。
组有一个可以检查的布尔matched
成员。
请参阅http://www.boost.org/doc/libs/1_59_0/libs/regex/doc/html/boost_regex/ref/regex_match.html
m[b].matched
-对于所有整数n<m.size(),如果子表达式n参与了匹配,则为true,否则为false。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 可选搜索和正则表达式
- 如何确定是否捕获了正则表达式的可选部分
- 带有可选扩展名的c++ 11正则表达式捕获文件名
- 正则表达式与所有组件可选,如何避免空匹配