我正在尝试替换长字符串中的某些单词。发生的事情是一些词保持不变,一些变化。不变的词似乎matcher
陷入了无限循环,因为它不断尝试对本应保持不变的词执行相同的操作。下面是一个与我类似的示例 - 我无法提供我正在使用的确切代码,因为它更详细并且我担心会占用太多空间。
public String test() {
String temp = "<p><img src=\"logo.jpg\"/></p>\n<p>CANT TOUCH THIS!</p>";
Pattern pattern = Pattern.compile("(<p(\\s.+)?>(.+)?</p>)");
Matcher matcher = pattern.matcher(temp);
StringBuilder stringBuilder = new StringBuilder(temp);
int start;
int end;
String match;
while (matcher.find()) {
start = matcher.start();
end = matcher.end();
match = temp.substring(start, end);
stringBuilder.replace(start, end, changeWords(match));
temp = stringBuilder.toString();
matcher = pattern.matcher(temp);
System.out.println("This is the word I'm getting stuck on: " + match);
}
return temp;
}
public String changeWords(String words) {
return "<p><img src=\"logo.jpg\"/></p>";
}
关于为什么会发生这种情况的任何建议?