【发布时间】:2019-10-02 21:40:39
【问题描述】:
我正在 uni 做一个项目,我必须使用正则表达式清理一些 HTML 代码(我知道,这不是最好的方法......)
正文输入:
<h1>This is heading 1</h1>
<h2 style="color: aqua">This is heading 2</h2>
<h3>This is heading 3</h3>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<a href="https://www.w3schools.com">This is a link</a>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
我得到了一个允许的标签列表,我还必须删除所有其他标签及其内容。例如{h3, p, ul}
首先我删除所有参数(不允许使用它们),然后我想出了这个正则表达式,它删除了标签和内容。
String regex = "(?i)<([h3|ul|p]+)>\\n?.*\\n?<\\/\\1>";
它可以工作,但现在我必须否定它并删除所有标签和内容,除了...中给出的那些标签和内容......
我试过了,但没有用:
`...[?!h3|ul|p]...`
此示例的预期结果:
<h3>This is heading 3</h3>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<ul>
</ul>
不太了解 Negative Lookahead 以及如何将其应用于我的问题,因此我将不胜感激。
【问题讨论】:
-
仅供参考: 在 Java 中,您不需要转义
/,因为这不是特殊字符。它只是用/“引用”正则表达式的语言中的一个特殊字符,即正则表达式写为/xxx/
标签: java html regex regex-negation