我想为%etd(msg01)这样的String写一个正则表达式。

String string = "My name is %etd(msg01) and %etd(msg02)";
Pattern pattern = Pattern.compile("%etd(.+)");
Matcher matcher = pattern.matcher(string);

while(matcher.find()) {
   System.out.println(matcher.group());
}


打印%etd(msg01) and %etd(msg02)。但是,我希望它分别打印%etd(msg01) %etd(msg02)。我的意思是我正在寻找非贪婪的比赛。

在这种情况下,应如何更改正则表达式以使其不贪婪?

最佳答案

您应该使用此正则表达式:

Pattern pattern = Pattern.compile("%etd\\([^)]+\\)");

08-06 20:22