正则表达式:在两个标签之间但在嵌套标签内匹配

时间:2019-05-04 08:10:07

标签: regex

我的目标是在两个内部div标签之间以及嵌套标签中的标签之间找到文本

以下是我的文字:

<img src="jhjhjdf.com/1.jpg"><p>sometext</p><div><p>jhasdh</p><div><strong>DONE or lop</strong><br></div><span> jkkhjks dkjh kjs</span></div>

我的目标是仅匹配最里面的div,即

<div><strong>DONE or lop</strong><br></div>

正则尝试1: <div>.*?</div>

现在我正尝试使用<div>.*?</div>查找所需的

匹配的文本是:(它匹配两个和一个

<div><p>jhasdh</p><div><strong>DONE or lop</strong><br></div>

我期待的是:

<div><strong>DONE or lop</strong><br></div>

所以我使用了错误的正则表达式

正则尝试2: <div>(?!<div>).*?</div>

所以我认为我应该只使用一次负向超前匹配

我尝试了<div>(?!<div>).*?</div>

匹配的文本是:(它匹配两个和一个)

<div><p>jhasdh</p><div><strong>DONE or lop</strong><br></div>

我期待的是:

<div><strong>DONE or lop</strong><br></div>

所以我使用了错误的正则表达式

为什么它不起作用。 <div>(?:<div>)不应与<div>之类的两个<div><p>jhasdh</p><div><strong>相匹配,而应与<div>strong

相匹配

正则尝试3: <div>(?:(?!<div>).)*?</div>

稍后在网上搜索后,我发现正常的正则表达式为

<div>(?:(?!<div>).)*?</div>

它匹配:

<div><strong>DONE or lop</strong><br></div>

那么(?:(?!<div>).)的神奇之处是什么,为什么<div>(?:<div>).*?</div>不起作用。有人可以解释

0 个答案:

没有答案