可能重复:
Java: How to decode HTML character entities in Java like HttpUtility.HtmlDecode?
我需要从title
文件中提取段落(如StackOverflow中的html
)。
我可以在Java中使用正则表达式来提取我需要的字段,但我必须decode
获得的字段。
示例
字段提取:
Paging Lucene's search results (with **;** among **'** and **s**)
解码后的字段:
Paging Lucene's search results
java中是否有允许我转换这些html代码的类?
答案 0 :(得分:25)
import org.apache.commons.lang.StringEscapeUtils;
// ...
String afterDecoding = StringEscapeUtils.unescapeHtml(beforeDecoding);
答案 1 :(得分:3)
不要尝试通过regexp解决所有问题。
虽然您可以执行某些操作 - 例如替换实体,但更好的方法实际上是使用(强大的) HTML解析器。
请参阅此问题:RegEx match open tags except XHTML self-contained tags 为什么用正则表达式瑞士军队电锯这是一个坏主意。 说真的,请阅读此问题和最佳答案,这是堆栈溢出突出显示!
Chuck Norris 可以使用正则表达式解析HTML。
坏消息是:编码字符的方法不止一种。
https://en.wikipedia.org/wiki/Character_encodings_in_HTML
例如,字符'λ'可以表示为
λ
,λ
或λ
如果你真的不走运,一些网站依赖一些浏览器功能来猜测字符含义。例如,™
无效,但许多浏览器会将其解释为™
。
显然,最好将其留给专用库,而不是自己尝试破解自定义正则表达式。
所以我强烈建议:
答案 2 :(得分:1)
Neko HTML对HTML做了很多有用的转换,"HTML Text Parser: Converting HTML to Text in Java using NekoHTML"解释了如何专门用它来提取文本内容。