正则表达式将重复的<p> </p>标记最小化到一个<p> </p>标记

时间:2009-11-17 10:16:44

标签: regex

通过代码,我得到了输出内容为XML。 我有一对或多个XML标签,如下所示:

<p>December10</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p> Welcome to this space </p>
<p>
</p>
<p>
</p>
<p>Hai, Today is Tuesday</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>This a xml tag</p>

我想要一个正则表达式,如下所示:

如上所述,我只想要一个EMPTY对Tag作为<p></p>。我不希望重复的EMPTY无限期或明确的对标签。

请在这方面帮助我使用正则表达式来克服这个问题。

3 个答案:

答案 0 :(得分:2)

天啊,请不要让bobince看到你问这个问题。

请参阅:RegEx match open tags except XHTML self-contained tagsParsing Html The Cthulhu Way

答案 1 :(得分:2)

 s/(<p><\/p>)+/<p><\/p>/g;

这个对我有效(意思= =我用你的标签测试了它)..它是perl / sed语法,s /// g表示's'替换和'g'全局

答案 2 :(得分:1)

如果这是.NET,你可以尝试这样的事情:

Regex.Replace(content, "(<p>\s*</p>\s*?)+","<p></p>")

甚至更好

Regex.Replace(content, "(<p>\s*</p>\s*?)+","<p/>")

(编辑添加Gumbo的建议)