【问题标题】:C# Regex replace some HTML sequences with <p>, some with </p>C# Regex 用 <p> 替换一些 HTML 序列,用 </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);

【问题讨论】:

标签: c# regex


【解决方案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 的链接中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多