我正在尝试使用Java标记HTML中的单词。当调用 replaceAll 时,此代码会抛出 ArrayIndexOutOfBoundsException 。
Pattern pattern = Pattern.compile(wordToHighlight + "\\w{0,5}");
String replacement = "<span class='highlight'>$1</span>";
Matcher matcher = pattern.matcher(html);
if (matcher != null)
if (matcher.find())
retVal = matcher.replaceAll(replacement);
答案 0 :(得分:5)
我不熟悉Java中的Regex,所以我会继续猜测一下,如果我离开基地的话,请原谅。在PCRE(PHP)中,1美元将引用第一个捕获组,因为您没有可能引发错误的捕获组。尝试使用$ 0.
答案 1 :(得分:2)
您应该尝试在搜索表达式上放置一个捕获组。即将你的字符串包在括号中。
即
"(" + wordToHighlight + "\\w{0,5})"
答案 2 :(得分:0)
尝试四个反斜杠:
Pattern.compile(wordToHighlight +“\\ w {0,5}”);
以某种方式逃脱发生两次。这意味着:
1。)\\变成\
2。)然后\变成\