代码之家  ›  专栏  ›  技术社区  ›  Ian Vink

Java RegEx replaceAll抛出ArrayIndexOutOfBoundsException[重复]

  •  2
  • Ian Vink  · 技术社区  · 15 年前

    我试图用Java语言在HTML中用一些标记来包围一个单词。此代码引发 数组下标越界异常 全部替换 被称为。

    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 回复  |  直到 15 年前
        1
  •  2
  •   Carl Smotricz    15 年前

    您应该尝试在搜索表达式中添加一个捕获组。i、 把你的字符串用括号括起来。

    "(" + wordToHighlight + "\\w{0,5})"
    
        2
  •  5
  •   Peter O'Callaghan    15 年前

        3
  •  0
  •   Mrs. Charly    12 年前

    尝试四个反斜杠:

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

    不知怎的,逃跑发生了两次。这意味着:

    1.)\\变成\

    2.)然后变成\