现在我有两个正则表达式可以做到这一点:
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/