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 标记,但后面没有另一个带有 <p>
的 HTML 标记,以及任何出现的一个或多个换行符前面不是 HTML 标记,而是后面跟一个带有</p>
的 HTML 标记。
举个例子:
<h1>Heading</h1>
Some text here
<h2>Subheading</h2>
...将更新为:
<h1>Heading</h1><p>Some text here</p><h2>Subheading</h2>
我试过了,但没用:
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
搜索:>(\n+)([^<])
替换:><p>$2
还有:https://regex101.com/r/bmjX2N/1
搜索:([^>])(\n+)<
替换:$1</p><
原始替换操作中的某些字符缺失。我尝试将它们再次添加到替换字符串中。
【讨论】:
谢谢,我早该想到的!它运作良好,但我认为您对第二次替换的回答中有一个错字:应该是Replace: $1</p><
。
谢谢,在文本中更正了这一点,而不是在 regexp101 的链接中。以上是关于C# Regex 用 <p> 替换一些 HTML 序列,用 </p> 替换一些的主要内容,如果未能解决你的问题,请参考以下文章