我有以下代码。
String testdata = "%%%variable1%%% is not equal to %%%variable2%%%";
Pattern p = Pattern.compile("\\%%%(.*?)\\%%%");
Matcher m = p.matcher(testdata);
String variables = "";
int i = 0;
while (m.find()) {
System.out.println(m.group());
variables=m.group().replaceAll("%%%", "");
System.out.println(variables);
i++;
}
我正在尝试在两个%%%
内打印字符串。
所以我期待低于输出:
%%%variable1%%%
variable1
%%%variable2%%%
variable2
但实际输出是:
%%%variable1%%%
variable1
variable2
variable2
为什么会这样?这有什么问题?
答案 0 :(得分:4)
您需要删除i
。没有必要
while (m.find()) {
System.out.println(m.group());
String variables=m.group().replaceAll("%%%", "");
System.out.println(variables);
}
<强> Ideone Demo 强>
您不需要replaceAll
,因为您需要的内容已经在第一个捕获组
while (m.find()) {
System.out.println(m.group());
System.out.println(m.group(1));
}
<强> Ideone Demo 强>