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

时间:2016-05-02 10:47:40

标签: html regex sublimetext2

我的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个“块”。我需要在<div>中包装它们以重新设置它们并且我认为我可以使用SublimeText2的查找/替换功能来获取所有这些并替换它们以使它们看起来像这样

<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>

我无法提出允许我选择和替换的正则表达式。

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

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

我该如何做到这一点?

免责声明:我不是要解析上帝知道的事情。我知道使用正则表达式进行HTML解析的恶魔性质。

3 个答案:

答案 0 :(得分:2)

查找

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

并替换

<div>\n\1\n</div>

enter image description here

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

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

答案 1 :(得分:0)

你可能需要像:

<强>找到

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

<强>替换

<div>\n$1\n</div>

Regex101 Demo

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

答案 2 :(得分:0)

如果您不想使用捕获组,以下也可以完成此任务

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

Regular expression visualization

Debuggex Demo

Regex101 Demo