用于查找空锚标签的正则表达式

时间:2011-09-15 12:15:05

标签: regex html-parsing

我正在寻找一个在任何html字符串中找到所有空锚标签的正则表达式。 “空”表示本身或其任何子节点中没有文本节点。

例如,应该找到这些:

<p>abc<a href="http://foo.com"></a>def</p>
<p>abc<a href="http://foo.com"><span></span></a>def</p>
<p>abc<a href="http://foo.com"><span><b></b></span></a>def</p>

而这些不是:

<p>abc<a href="http://foo.com">Some text</a>def</p>
<p>abc<a href="http://foo.com"><span></span></a>def</p>
<p>abc<a href="http://foo.com">Some<span><b>Text</b></span></a>def</p>

正则表达式应该与POSIX兼容(我需要它用于MySQL)。

为什么呢? 我需要它来删除mysql表列(使用纯MySQL)中的空锚和一个帮助自定义regex_replace函数,老实说,我不知道更好的方法来实现这一点。 MySQL UpdateXML不能同时用于多个匹配。

3 个答案:

答案 0 :(得分:0)

这将有效:

/<a href=.*?><\/a>/

答案 1 :(得分:0)

尝试使用此模式,它适用于您的情况

<[^/>]+>[ \n\r\t]*</[^>]+>

答案 2 :(得分:-1)

答案是:不要这样做。 Parsing HTML with regex is bad,而是使用PHPs SimpleXML类的组合来浏览DOM树。