我想匹配不动产服务器上的属性的地址。假设包含div的地址名为<div class="title">
,地址位于最后<h2>
部分,如下所示:
<body>
<div class="price">
<h2>
h2
</h2>
</div>
<div class="title">
<abcd>
abcd
</abcd>
<efg>
efg
</efg>
<h2>
adress
</h2>
</div>
</body>
是否有可能通过一个正则表达式捕获地址,即使它将在某个捕获的组中?
我的工作解决方案是:
regex="/<div class="title">everything_except_<h2>*([^<]*)/";
答案 0 :(得分:1)
试试这个正则表达式:
<div class="title">(?:.(?!<\/div>))*<h2>([^<]*)
这里的要点是在.*
贪婪后制作<div class="title">
,但只有在找到</div>
之后才匹配。因此,正则表达式将.
限制为仅</div>
不会出现的事件(因此会给我们(?:.(?!<\/div>))*
)。
演示:https://regex101.com/r/2EGXue/1
<强>更新强>
如果可能出现嵌套div
,但只能进行一级嵌套,并且所需的<h2>...</h2>
不在div
的任何一个范围内(如提供的数据样本中所发生的那样) ),贪婪匹配模式(.(?!<\/div>)
)应该扩展为匹配“not <div ...>...</div>
”(即<div.*?<\/div>
)或“not </div>
”({{1 }}):
.(?!<\/div>)