我正在尝试匹配字符串,只要它不是html标记的一部分。
例如,在搜索字符串时:“abc”。
<a href="foo.html">abc def</a>
应匹配
<p> foo bar foo abc foo bar</p>
应匹配
但
<a href="abc.html">foo</a>
不应该匹配。
感谢您的帮助!
答案 0 :(得分:4)
我真的不会使用正则表达式来匹配HTML,因为HTML不是常规的,并且有大量的边缘情况可以帮助你解决问题。对于除最简单之外的所有情况,我都使用HTML解析器(例如PHP的this one)。
答案 1 :(得分:0)
.*>[^<]*abc[^<]*<.*
答案 2 :(得分:0)
我相信任何正则表达式都会在某些CDATA部分打破。
答案 3 :(得分:0)
虽然我也同意Brian的comment,但我经常使用正则表达式进行快速和脏的解析,对于你的情况,我会使用类似的东西:
s/[\r\n]// s/<!\[CDATA\[.*?]]>// s/</\n</ s/>/>\n/
<
s/^<.*//
你留下的只是文字(可能还有很多白空间)。虽然这不是关于正则表达式,而是关于搜索和替换的更多内容。
答案 4 :(得分:0)
您正在寻找的是DOM解析器。这将删除所有HTML,并为您提供您正在检查的页面的纯文本,然后您可以匹配。不确定你的用例是什么,但我不是假设你没有操纵DOM,否则你就是在使用JavaScript。
如果您只是提取信息,请使用The Simple HTML DOM Parser之类的内容解析页面,然后匹配您可以从解析对象中获取的纯文本。