查找和替换标签之间的内容

Find and replace content between tags

我的部分 HTML 看起来像这样

<h4>Headline 1</h4>
<p>Content 1</p>
<h4>Headline 2</h4>
<p>Content 2</p>
<h4>Headline 3</h4>
<p>Content 3</p>

我有大约 50 个 "blocks"。我需要将它们包裹在 <div> 中以重新设计它们,我想我可以使用 SublimeText2 的 Find/Replace 函数来获取所有这些并替换它们,使它们看起来像这样

<div>
<h4>Headline 1</h4>
<p>Content 1</p>
</div>    
<div>
<h4>Headline 2</h4>
<p>Content 2</p>
</div>
<div>    
<h4> Headline 3</h4>
<p>Content 3</p>
</div>

我想不出允许我 select 和替换的正则表达式。

我尝试了 <h4>(.*)<\/p> 但没有产生任何结果。

我还在 https://regex101.com/ 上测试了 /<h4>(.*)<\/p>/s,但它在整个文件中产生了 1 个匹配项。

我如何找到这个?

免责声明:我并不是要解析天知道有多少东西。我知道 HTML 使用正则表达式解析的恶魔性质。

查找

(<h4>[\S\s]*?</p>)

并替换

<div>\n\n</div>

或者,您可以将此正则表达式用于 find

(?s)(<h4>.*?</p>)

您可能需要这样的东西:

查找:

(?sim)(<h4>.*?</p>)

替换:

<div>\n\n</div>

Regex101 Demo


PS:确保点匹配换行符选项被选中

如果您不想使用捕获组,以下内容也可以完成工作

<h4>[\w\W]+?<\/p>(?=$)

Debuggex Demo

Regex101 Demo