C# Regex 用 <p> 替换一些 HTML 序列,用 </p> 替换一些

Posted

技术标签:

【中文标题】C# Regex 用 <p> 替换一些 HTML 序列,用 </p> 替换一些【英文标题】:C# Regex replace some HTML sequences with <p>, some with </p> 【发布时间】:2021-10-17 18:10:19 【问题描述】:

C#、.NET 环境。

html 字符串中,我试图替换任何出现的一个或多个换行符 (\n),这些字符前面有一个 HTML 标记,但后面没有另一个带有 &lt;p&gt; 的 HTML 标记,以及任何出现的一个或多个换行符前面不是 HTML 标记,而是后面跟一个带有&lt;/p&gt; 的 HTML 标记。

举个例子:

<h1>Heading</h1>

Some text here

<h2>Subheading</h2>

...将更新为:

&lt;h1&gt;Heading&lt;/h1&gt;&lt;p&gt;Some text here&lt;/p&gt;&lt;h2&gt;Subheading&lt;/h2&gt;

我试过了,但没用:

string result = "some HTML content";

string pattern = @">(\n+)[^<]";
result = Regex.Replace(result, pattern, "<p>", RegexOptions.Multiline);

pattern = @"[^>](\n+)<";
result = Regex.Replace(result, pattern, "</p>", RegexOptions.Multiline);

【问题讨论】:

Here an idea at regex101,如果这符合您的需求,请尝试。 【参考方案1】:

试试这个:https://regex101.com/r/kMxvyV/1

搜索:&gt;(\n+)([^&lt;]) 替换:&gt;&lt;p&gt;$2

还有:https://regex101.com/r/bmjX2N/1

搜索:([^&gt;])(\n+)&lt; 替换:$1&lt;/p&gt;&lt;

原始替换操作中的某些字符缺失。我尝试将它们再次添加到替换字符串中。

【讨论】:

谢谢,我早该想到的!它运作良好,但我认为您对第二次替换的回答中有一个错字:应该是Replace: $1&lt;/p&gt;&lt; 谢谢,在文本中更正了这一点,而不是在 regexp101 的链接中。

以上是关于C# Regex 用 <p> 替换一些 HTML 序列,用 </p> 替换一些的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 替换 html 内容 C#

C# 正则表达式:将空格替换为 XML 标记

用 <p> 段落和 <br /> 标签替换换行符

C#正则表达式编程:Regex类用法

如何在 C# 中使用 Regex 将 [number] 替换为 number - 1?

如何使用 regex.split 在 c# 中解析 html 并返回值数组