带有多个字符分隔符的正则表达式
Regex with multiple character separator
我有这个字符串
options{Red | Blue | Green}
我想一个接一个地捕获大括号内的选项。到目前为止,我能够捕获内部部分,但我不明白如何将模式 SPACELINESPACE|
设置为分隔符并捕获红蓝绿。
为了捕获大括号内的字符串,我使用了这个options{(.)*}
我在用这个捕获值时有一些结果:
(.+?)(?: | |$)
但是当我像这样创作所有内容时options={(.+?)(?: | |$)}
我没有捕捉任何东西
你能用这样的东西吗:
w+(?=[^{]*?})
>EDIT 1:下面的评论中提到的OP:
"如果我有这样的东西呢,
options{Red | Blue | green },users={ Paul | Ringo | John | George}
?我只想捕捉选项。
我不确定使用什么风格,但下面的模式将否定在"用户"中找到的子字符串。
busers={.*?}(*SKIP)(*F)|w+(?=[^{]*?})
观看在线演示
>编辑2:在不知道除了"用户"之外是否还有其他类别需要否定的情况下,我们可以扩展上面的模式:
(?<!boptions){.*?}(*SKIP)(*F)|w+(?=[^{]*?})
观看在线演示
另一种方法是使用以下方法使用提升和匹配子字符串:
(?:boptions{|G(?!^))(?:[ |]+)?Kw+
观看在线演示
您可以通过几个(非正则表达式(步骤完成其余的工作: 使用您的第一个正则表达式,在|
上拆分,然后修剪。
如果您想在正则表达式中完成所有这些操作,并最终将每种颜色放在不同的组中,它可能更复杂但可行,我将尝试挑战。 总是有3种颜色吗?如果是这样,那就容易多了。
编辑: 仅使用正则表达式,这将完成(?!.*{)([^ |}]+)
的技巧,具有组 1 中的选项
https://regex101.com/r/0Zjzz8/1
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- Makefile中扩展正则表达式列表的分隔符
- 我可以在 c++ 中使用哪些正则表达式来解析分隔符、运算符、标识符和实数?
- c++正则表达式.获取带分隔符的字符串
- c++正则表达式标记分隔符
- 如何在正则表达式匹配结果中包含分隔符