对于{123{a,b}}
我想要匹配的构造{123{
和}}
.
这是由正则表达式完成的:{(.*?){|}}
但是:现在我想使用相同的表达式来运行并仅{a,b}
匹配。{
}
因此,我必须以某种方式使第二个{
可选。但是怎么做?
我正在使用http://gskinner.com/RegExr/进行即时测试。
对于{123{a,b}}
我想要匹配的构造{123{
和}}
.
这是由正则表达式完成的:{(.*?){|}}
但是:现在我想使用相同的表达式来运行并仅{a,b}
匹配。{
}
因此,我必须以某种方式使第二个{
可选。但是怎么做?
我正在使用http://gskinner.com/RegExr/进行即时测试。
您可以使用以下正则表达式:
(?:{.*?)?{|}}?
这使得内大括号之外的所有内容都是可选的。
(?:{.*?)? // Contents before the opening inner brace '{' (Optional)
{
|
}
}? // Last brace (Optional)
例如,怎么样
/{(123{)?/
尝试使用此代码:
Pattern pattern = Pattern.compile("\\{(.*\\{|[^\\}]*)");
Matcher matcher1 = pattern.matcher("{123{a,b}}");
Matcher matcher2 = pattern.matcher("{a,b}");
while (matcher1.find()) {
System.out.println(matcher1.group());
}
while (matcher2.find()) {
System.out.println(matcher2.group());
}
输出:
{123{
{a,b