【发布时间】:2013-06-16 12:48:01
【问题描述】:
在 Java 中,我需要在没有 href 属性的字符串中匹配 <a> 标记。例如在以下字符串中:
text <a class="aClass" href="#">link1</a> text <a class="aClass" target="_blank">link2</a> text
它不应该匹配<a class="aClass" href="#">link1</a>(因为它包含href)但它应该匹配<a class="aClass" target="_blank">link2</a>(因为它不包含href)。
我设法构建了正则表达式来匹配我的标签:
<a[^>]*>(.*?)</a>
但我不知道如何用 href 消除标签
(我知道我可以使用 HTML 解析器等,但我需要使用正则表达式。
【问题讨论】:
-
为什么需要使用正则表达式? HTML is not a regular language.
-
首选使用正则表达式解析 HTML 的原因有很多。一些编辑器将允许使用正则表达式进行搜索和替换,因为同一编辑器不支持“在此处插入您的 html 解析代码”。或者尝试从格式非常糟糕的 html 代码中提取数据可能会引发解析错误。或者家庭作业说使用正则表达式而不是解析引擎。或者如果文档甚至不是 html 而是包含 html 示例怎么办......同意或不同意,使用引擎解析 html 并不总是最好的解决方案。
-
我很确定人们正在运行类似机器人的脚本,每当遇到“html”和“regex”字样的问题时,他们会自动发布指向该 的链接您无法使用正则表达式解析 [X]HTML..." 答案。搞笑。
-
哈哈,他们可能也为此使用了解析引擎。