java - 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}
我的代码有什么问题?
解决方案
推荐阅读
- java - 如何明智地使用数字签名页面签署 PDF 文档?
- php - 如何根据平均评分以及评分所基于的评论数量显示这些数据库项目
- javascript - 重新启动 Tizen 显示器通常不会导致更新
- powershell - time added 和 timeraised 的值在 scom 中不合适
- java - java从json读取日期
- c# - 例外:“无效的网络资源请求”
- cordova - 在设备上运行时出现离子运行时错误
- c++ - 使用 Dijkstra 在提升图中查找最短路径
- macos - MacOS 和 JSVC:SCARD_E_NO_SERVICE:智能卡资源管理器未运行
- android-studio-3.0 - 约束:约束布局:1.1.0 不显示动态添加的自定义视图