Java RegEx replaceAll抛出ArrayIndexOutOfBoundsException

时间:2010-07-29 16:02:20

标签: java regex

我正在尝试使用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);

3 个答案:

答案 0 :(得分:5)

我不熟悉Java中的Regex,所以我会继续猜测一下,如果我离开基地的话,请原谅。在PCRE(PHP)中,1美元将引用第一个捕获组,因为您没有可能引发错误的捕获组。尝试使用$ 0.

答案 1 :(得分:2)

您应该尝试在搜索表达式上放置一个捕获组。即将你的字符串包在括号中。

"(" + wordToHighlight + "\\w{0,5})"

答案 2 :(得分:0)

尝试四个反斜杠:

Pattern.compile(wordToHighlight +“\\ w {0,5}”);

以某种方式逃脱发生两次。这意味着:

1。)\\变成\

2。)然后\变成\