C++ RegEx重复捕获组
C++ RegEx repeated capturing groups
我正在尝试解析形式的字符串
{{name1 | filter1|filter2 |filter3}}
成(name1, filter1, filter2, filter3)
.
我有一个正则表达式:
static const regex r("\{\{\s*([\.\w]+)(\s*\|\s*[\.\w]+)*\s*\}\}");
我想找到第二组的所有出现,它用克莱恩星标记(...*.问题是我只能找到该组的最后一次出现。
相反,我使用以下正则表达式:
static const regex r("\{\{\s*([\.\w]+)((\s*\|\s*[\.\w]+)*)\s*\}\}");
查找第二个捕获组(整个子字符串 " | filter1|filter2 |filter3"
)并使用另一个 RegEx 解析它。
如何在C++中做到这一点?
最相似的问题在这里:正则表达式:重复捕获组
您需要在"*"表达式周围添加 (),以匹配第二组。
(s*|s*[.w]+)*
此处,() 组匹配以下 SP |SP 字即使"*"匹配零个或多个实例。将其更改为:
((s*|s*[.w]+)*)
或者,要清楚的是,内部 () 不是标记的表达式:
((?n:s*|s*[.w]+)*)
相关文章:
- 此模式的C++RegEx
- C++ std::regex 使用前瞻失败
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 你能防止 std::regex 在无效表达式上抛出异常吗?
- 使用Regex解析cpp中的字符串并创建映射
- C++:如何用split查找单词?Regex
- 在VC2015U3上,std::regex比boost::regex慢得多
- 是否有更有效的方法来生成日期的REGEX字符串
- 在C++中使用带有regex的捕获组
- 将std::regex设置为静态的好主意吗
- 为什么Regex(c++)需要指数时间
- std::regex and dual ABI
- C++11 std::regex后备选项
- 以不同的方式替换每一项,regex c++
- 使用 boost::regex (c++) 比较两个正则表达式
- Build Boost Regex for Windows VS2013
- 包含在 std::regex 搜索中,使用 std::regex_token_iterator 从 std::sub_m
- std::string references、std::regex和boost::filesystem的基本概念
- std::regex 是否保证了最坏情况下的时间复杂度?