考虑以下输入HTML:
<div class='content'>
<img style='border-style: solid; border-width: 1px;' src='/media/uploads/defaults/181'/><br/><br/>
<div class='imgCaption'>
Reverse Osmosis Caption
</div>
</div>
<pagebreak/>
<h3>Access </h3>
<h4>Type</h4>
<div class='content'>
Your plumbing system is accessible with a Main Shut off Valves
</div>
<h4>Location</h4>
<pagebreak/>
<h3>Operation & maintenance #1</h3>
<div class='content'>
All wastewater treatment systems and their components require regular maintenance.
</div>
<h4>Activity</h4>
所以我需要找到所有未被类&#34;内容&#34;的div所遵循的h4标题。 (在这个例子中,它是&#34; h4活动/ h4&#34;在最底层)。
我的正则表达式
/<h4>.*<\/h4>(?!<div class='content'>)/
在
后捕获所有内容<h4>Type</h4>
这是有道理的,因为它不仅仅是&#34; div class =&#39; content&#39;&#34;。
所以我的问题是我如何重新编写查询,因此它只会选择不包含类内容div的标题。
答案 0 :(得分:0)
您需要在negative lookahead assertion内的第一个.*?
添加.*?
。如果您未能添加<div class='content'>
,则否定前瞻会检查<h4>(?:(?!<\/?h4>).)*?<\/h4>(?!.*?<div class='content'>)
代码的紧随其后。
h4
它会与最后一个<div class='content'>
代码匹配,因为它后面没有任何{{1}}代码。