好吧我彻底在为什么这个正则表达式的作品。我正在使用的文字是这样的:这个正则表达式为什么起作用?
<html>
<body>
hello
<img src="withalt" alt="hi"/>asdf
<img src="noalt" />fdsa<a href="asdf">asdf</a>
<img src="withalt2" alt="blah" />
</body>
</html>
使用下面的正则表达式(在PHP中测试,但我猜想这是适用于所有的Perl的正则表达式),它将返回不包含所有的img标签一个ALT标签:
/<img(?:(?!alt=).)*?>/
Returns:
<img src="noalt" />
所以基于这样我会觉得简单地删除无反向引用将返回相同的:
/<img(?!alt=).*?>/
Returns:
<img src="withalt" alt="hi"/>
<img src="noalt" />
<img src="withalt2" alt="blah" />
正如你看到的,而不是它只是返回所有图片标签。然后让事情变得更加混乱,删除? (一个简单的通配符,据我所知)的*返回到最后后>
/<img(?!alt=).*>/
Returns:
<img src="withalt" alt="hi"/>
<img src="noalt" />fdsa<a href="asdf">asdf</a>
<img src="withalt2" alt="blah" />
因此,任何人照顾通知我,或者至少指向我怎么在这里上的方向是正确的?
2013年。使用XML解析器。 – 2013-02-14 21:45:43
哈,那个html只是我写的真正快速的东西来测试别人的正则表达式。 – Eric 2013-02-14 22:09:04