首页 > 解决方案 > Java 正则表达式匹配模式组意外匹配

问题描述

我想在大括号和下面的模式之间捕获组是成功的

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}

我的代码有什么问题?

标签: javaregex

解决方案


推荐阅读