对于构建{123{a,b}}
,我想匹配{123{
和}}
。
这是由正则表达式完成的:{(.*?){|}}
但是:现在我想使用相同的表达式在{a,b}
上运行,并且只匹配{
和}
。
因此我不得不让第二个{
可选。但是如何?
我正在使用http://gskinner.com/RegExr/进行即时测试。
答案 0 :(得分:3)
您可以使用以下正则表达式:
(?:{.*?)?{|}}?
这使得内括号外的所有内容都可选。
(?:{.*?)? // Contents before the opening inner brace '{' (Optional)
{
|
}
}? // Last brace (Optional)
上的演示
答案 1 :(得分:0)
怎么样,例如
/{(123{)?/
答案 2 :(得分:0)
尝试使用此代码:
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