我有一个java程序,目前我使用正则表达式替换HTML文档中的任何术语,这很好。
Pattern p = Pattern.compile(links);
Matcher m = p.matcher(text);
RegexText = m.replaceAll("ReplacementString");
但是,如果使用富文本标记部分格式化单词,则单词不匹配。 例如。 TES 汀
<b>tes</b>ting
在这种情况下,“测试”一词不匹配,因为“tes”是粗体文字。
有没有办法替换像这样的标签破坏的单词。此外,重要的是我不要松开单词上的富文本格式,因此只需剥离标签而不将其插回正确的位置就不是一种选择。
答案 0 :(得分:3)
不幸的是,您只能使用正则表达式将HTML与此范围内的内容进行可靠匹配。这是因为HTML使用正则表达式是context-free language而不是regular language parseable。具体限制是正则表达式无法将开始HTML标记与结束标记相关联,在执行匹配时需要执行此操作,同时保持格式不变。
考虑使用HTML解析器 - Java有很多选项。