c++ - C++ 中的正则表达式

标签 c++ regex boost-regex

现在我有两个正则表达式可以做到这一点:

Regex-1 = "(\\{(\\w+)\\})";
Regex-2 = "(\\{([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\})"; 

我只是希望能够将两个 Regex 合并为一个,以便 Regex 搜索到的第一个匹配。

概念上我在想regex-1 ||正则表达式 2。有可能把它们结合起来吗?

谢谢。

最佳答案

你是说这样?

Regex-1_2 = "(\\{(\\w+)\\})|(\\{([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\})";

编辑:

那么,是这样的吗?

{(((\w+)|({\w+}))\|?)*}

编辑 2:

您最后的评论很有帮助。所以,从头到尾工作。你知道你想要匹配左大括号,所以这部分很简单:

{

现在,在第一个大括号之后,有两个选项。将有一个或多个字母数字(或下划线)字符,或者将有三组零个或多个字符,由竖线分隔。前两组必须是非管道字符,而最后一组必须是非大括号字符(因为大括号将关闭表达式)。这可以使用交替结构来表达:

{(\w+|[^|]*\|[^|]*\|[^}]*)

最后,表达式以大括号结束:

{(\w+|[^|]*\|[^|]*\|[^}]*)}

这适用于您提供的示例。如果您的规则不同或更具体,则需要说明。

关于c++ - C++ 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321366/

相关文章:

C++ Char 指针数组

正则表达式验证 JSON

regex - 在 VBA 中使用正则表达式拆分块

c++ - boost 正则表达式。命名组分为两部分

c++ - 如何在 Win32 应用程序中捕获 CTRL + CTRL 按键?

c++ - C++中如何知道指针指向的对象类型?

c++ - 我的最后一个正则表达式不起作用,但我无法弄清楚原因

c++ - 如何在 C++ 中使用 boost 正则表达式解析转义元素 '\' 和 unicode 字符 '\u'

c++ - 给定一个任意容器,推导出一个相关类型的容器类型

arrays - 将字符串(基于逗号)拆分为数组,在列表末尾添加一个空项