Java正则表达式匹配模式组意外匹配

时间:2020-10-30 16:10:19

标签: java regex

我想在大括号之间捕获组,并且以下模式成功了

String pattern = "(\\{.*?\\})+";

示例输入

String line = "I expect(dd) new five{I\r\nII} hundred dollars new test {$500} {$1}.";

// Create a Pattern object
  Pattern r = Pattern.compile(pattern ,Pattern.DOTALL);

// Now create matcher object.
  Matcher matcher = r.matcher(line);
  while(matcher.find())
      {
          System.out.println( matcher.group());
      }

并且预期的输出是

{I\r\nII}

{$500}

{$1}

但出乎意料的是,当我尝试使用包含new关键字的组

String pattern = "(new.*\\{.*?\\})+";

我知道了

new five{I\r\nII} hundred dollars new test {$500} {$1}

我希望输出是

new five{I\r\nII}

new test {$500}

我的代码有什么问题?

0 个答案:

没有答案