0

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

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

我只是希望能够将两个正则表达式组合成一个,这样正则表达式首先搜索的就是匹配项。

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

谢谢。

4

1 回答 1

1

你的意思是这样吗?

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

编辑:

那么,像这样的事情?

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

编辑2:

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

{

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

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

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

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

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

于 2012-07-04T01:34:09.107 回答