Java正则表达式:用正则表达式清除空格,但不用于下划线,粗体和斜体

时间:2017-09-04 19:48:05

标签: java regex

我通常只在stackoverflow上阅读并获得一些编程tipps,但今天我有一个关于正则表达式的问题。

我已经从JSoup解析了HTML-Code,并在<之前的每个空格中用正则表达式清除了并且在>之后问题是-Tag(和)之后或之前的空白,并且也被清除。

我可以添加到我的正则表达式中,以便在结束标记后面的空格(仅斜体,粗体和下划线)或开始标记之前的空格不会被删除(或者只剩下一个空格)?

我的正则表达式:

newHtml.select(UpgradeOldHtmlTags.BODY.toString()).html().replace("\n", "").replaceAll("\\s*<\\s*", "<")
            .replaceAll("\\s*>\\s*", ">")

结果的一部分:

und &nbsp;<u>Schadstofffreisetzung</u>bei Reinigungs-

我想要的结果:

und &nbsp; <u>Schadstofffreisetzung</u> bei Reinigungs-

非常感谢你的帮助。

编辑:

使用JSoup解析后:

<p><br></p> <ol>  <li><font color="#007b00"><span style="font-size: 18px;"><b><u>Sicherheitsdatenblatt </u></b></span></font>auf Anfrage erhältlich. (EUH210)</li> </ol> <p> www.google.de </p> <p><u>Keimbesiedelung</u> in Kanälen, Filtern und ggf. Befeuchterwasser der Anlage:&nbsp; </p>

在我的正则表达式之后:

<p><br></p><ol><li><font color="#007b00"><span style="font-size: 18px;"><b><u>Sicherheitsdatenblatt</u></b></span></font>auf Anfrage erhältlich. (EUH210)</li></ol><p>www.google.de</p><p><u>Keimbesiedelung</u>in Kanälen, Filtern und ggf. Befeuchterwasser der Anlage:&nbsp;</p>

例如,不应删除单词“Sicherheitsdatenblatt”和-tag之间的空格。

来自巴伐利亚的最好问候

塞巴斯蒂安

2 个答案:

答案 0 :(得分:0)

我知道你想在Java中使用它,但我能用JavaScript完成。看看正则表达式是否有帮助......

以下是regex101 https://regex101.com/r/5rt9he/1

上的匹配

和JavaScript中的替换函数

 let str = "und &nbsp;<u>Schadstofffreisetzung</u>bei Reinigungs-";
 let result = str.replace(/(<u>)(.*?)(<\/u>)/, " $1$2$3 ");
 console.log(result) -> 
 und &nbsp; <u>Schadstofffreisetzung</u> bei Reinigungs-

答案 1 :(得分:0)

我已经为自己做到了。谢谢你的帮助。

评论员:下次阅读比标题更多的内容!您将看到,我没有使用正则表达式来解析HTML。并且不要发布与主题无关的链接。

所以你不会吓跑那些只需要一点帮助的新海报,也可以帮助其他新海报...