gpt4 book ai didi

c# - 如何在 C# 中用 Regex 替换两个 HTML 标签之间的所有换行符

转载 作者:行者123 更新时间:2023-12-05 04:20:45 24 4
gpt4 key购买 nike

我有一个结构如下的 html 代码:

<html>
<body>
...
<p class="class1">
Text
Some more text
Even more text
</p>
...
<p class="class2">
Bla
Bla
Read more at
<a href="..." >Link</a>
</p>
</html>

如何替换 <p> 之间的所有换行符?带有 <br /> 的标签在 C# 中?所有其他标签都不应匹配。

这就是我目前拥有的正则表达式。但它并没有像我预期的那样工作。

/(?<=<p).*(\n).*(?=<\/p>)/gs

最佳答案

问题是删除另外两段文本之间的一段文本可以通过以下方式在 C# 中使用正则表达式解决:

var start = @"<p[\s>]";
var end = @"</p>";
var pattern = $@"(?s){start}.*?{end}";
var result = Regex.Replace(text, pattern, m =>
m.Value.Replace("\n", "<br />"));

在这里,(?s)<p[\s>].*?</p>将找到 <p 之间的所有子字符串(后跟空格或 > )和 </p> , 然后 m => m.Value.Replace("\n", "<br />")将用 <br /> 替换 LF 符号在匹配值中。

如果可以混合换行符,则需要使用另一个 Regex.Replace调用并替换 m.Value.Replace("\n", "<br />")

Regex.Replace(m.Value, "\r\n?|\n", "<br />")

或者,如果您打算将连续的换行符缩小为单个 <br /> :

Regex.Replace(m.Value, "(?:\r\n?|\n)+", "<br />")

关于c# - 如何在 C# 中用 Regex 替换两个 HTML 标签之间的所有换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74392619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com