用Java中的等效字符替换HTML代码

目前我正在努力在java中转换具有等效字符的HTML代码。 我需要将以下代码转换为字符。

è - è ® - ® & - & ñ - ñ & - & 

我尝试使用正则表达式模式

 (&#x)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)(;) 

当我调试时, matcher.find()给了我true但是控件跳过我编写转换代码的循环。 不知道那里发生了什么。

另外,有没有办法优化这个正则表达式?

任何帮助表示赞赏。

例外

 java.lang.NumberFormatException: For input string: "x26" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at org.apache.commons.lang.Entities.unescape(Entities.java:683) at org.apache.commons.lang.StringEscapeUtils.unescapeHtml(StringEscapeUtils.java:483) 

另外,有没有办法优化这个正则表达式?

是的, 不要使用正则表达式执行此任务,请使用Apache commons lang中的 Apache StringEscapeUtils :

 import org.apache.commons.lang.StringEscapeUtils; ... String withCharacters = StringEscapeUtils.unescapeHtml(yourString); 

JavaDoc说:

Unescapes包含实体转义的字符串转义为包含与转义对应的实际Unicode字符的字符串。 支持HTML 4.0实体。

例如,字符串"<Français>" 将成为""

如果实体未被识别,则将其保留,并逐字插入结果字符串中。 例如">&zzzz;x"将变为">&zzzz;x"

所有其他可能性或现有的util方法之一可以是spring-web的org.springframework.web.util.HtmlUtils.htmlUnescape

自包含Groovy脚本中的示例用法:

 @Grapes( @Grab(group='org.springframework', module='spring-web', version='4.3.0.RELEASE') ) import org.springframework.web.util.HtmlUtils println HtmlUtils.htmlUnescape("La élite del tenis no teme al zika y jugará en Río")