Java Reg Expression将HTML标记包装在文本周围

时间:2015-09-03 14:24:29

标签: java

我正在处理HTML解析器的文本。我正在使用" @@"标记大胆字符的符号。实施例

Example @@Bold text in a paragraph

转向:

Example <strong>Bold</strong> text in paragraph

以下代码有效,但我发现它只适用于最后一个Bold符号:

private static String escapeBold(String sCurrentLine) {
    if (sCurrentLine.indexOf("@@") < 0) {
        return sCurrentLine;
    }

    String newString = null;
    String oldString = null;
    String chars[] = sCurrentLine.split(" ");
    for (String s : chars) {
        if (s.startsWith("@@")) {
            newString = "<strong>" + s.replaceAll("@@", "") + "</strong>";
            oldString = s;
        }
    }
    return (sCurrentLine.replaceAll(oldString, newString));
}

有没有更简单的方法,可能使用RegExpr? 谢谢!

1 个答案:

答案 0 :(得分:5)

看起来您的方法看起来像

private static String escapeBold(String sCurrentLine) {
    return sCurrentLine.replaceAll("@@(\\w+)", "<strong>$1</strong>");
}

它会尝试找到每个@@someWord并将someWord部分放在第1组中。作为替代,我们通过$1使用存储在第1组中的匹配,并使用{{1标签。

要理解此代码,您需要知道<strong>使用正则表达式(正则表达式)来查找我们要修改的部分,replaceAll(regex,replacement)描述了我们要如何修改它。
正则表达式replacement表示范围\\w a-z A-Z0-9中的字符。如果要包含其他字符,可以创建自己的字符类,或使用代表所有非空白字符的_