1

我有一个 java 程序,目前我正在使用正则表达式来替换 HTML 文档中的任何术语,并且工作正常。

Pattern p = Pattern.compile(links);
Matcher m = p.matcher(text);
RegexText = m.replaceAll("ReplacementString");

但是,如果单词被部分格式化为富文本标签,则不会匹配。例如。测试_

<b>tes</b>ting

在这种情况下,单词“testing”不匹配,因为“tes”是粗体文本。

有什么方法可以替换被这样的标签破坏的单词。同样重要的是,我不会丢失单词上的富文本格式,因此仅剥离标签而不将它们插入回正确的位置不是一种选择。

4

1 回答 1

3

不幸的是,仅使用正则表达式无法可靠地将 HTML 匹配到这种程度。这是因为 HTML 是一种上下文无关语言,而不是可使用正则表达式解析的常规语言。具体限制是正则表达式不能将开始 HTML 标记与结束标记相关联,它需要这样做才能在保持格式不变的情况下执行匹配。

考虑改用 HTML 解析器 - Java 有很多可用的选项。

于 2012-12-15T00:55:16.383 回答