我想为%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\\([^)]+\\)");