现在我有两个正则表达式可以做到这一点:
Regex-1 = "(\\{(\\w+)\\})";
Regex-2 = "(\\{([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\})";
我只是希望能够将两个正则表达式组合成一个,这样正则表达式首先搜索的就是匹配项。
从概念上讲,我在想 regex-1 || 正则表达式-2。有可能将它们结合起来吗?
谢谢。
现在我有两个正则表达式可以做到这一点:
Regex-1 = "(\\{(\\w+)\\})";
Regex-2 = "(\\{([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\})";
我只是希望能够将两个正则表达式组合成一个,这样正则表达式首先搜索的就是匹配项。
从概念上讲,我在想 regex-1 || 正则表达式-2。有可能将它们结合起来吗?
谢谢。
你的意思是这样吗?
Regex-1_2 = "(\\{(\\w+)\\})|(\\{([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\})";
编辑:
那么,像这样的事情?
{(((\w+)|({\w+}))\|?)*}
编辑2:
你最后的评论有帮助。所以,从头到尾工作。你知道你想匹配一个左大括号,所以这部分很简单:
{
现在,在第一个大括号之后,有两个选项。要么有一个或多个字母数字(或下划线)字符,要么有三组零个或多个字符,用竖线分隔。前两组必须是非管道字符,而最后一组必须是非花括号字符(因为花括号将关闭表达式)。这可以使用交替构造来表示:
{(\w+|[^|]*\|[^|]*\|[^}]*)
最后,表达式以大括号结束:
{(\w+|[^|]*\|[^|]*\|[^}]*)}
这适用于您提供的示例。如果您的规则不同或更具体,则需要说明。