从字符串中删除下划线,除了字符串中的 link

Remove underscore from string except from the link in string

我有一个文本段落,其中可能包含一些 url 链接。我只需要从该字符串中删除下划线“_”。

但正如我所说的文本有 url 链接和 url 链接也可能有下划线,但不应删除它们的下划线。

链接可以是任何顺序,即这些链接上方或下方可能有一些文本,基本上这是将在电子邮件中发送的电子邮件文本内容。

我正在考虑使用一些正则表达式,但这也会从链接中删除我不想要的下划线。我想删除那些链接,然后删除下划线,然后再次在文本中添加链接,但正如我所说,链接可以按不同的顺序排列,即文本是动态内容。

任何指导将不胜感激,我将从那里获取。谢谢

您可以使用可变宽度负向后视 (?<!\b(?:https?://\S*|www\.))_:

(?<!\b(?:https?://|www\.)\S*)_

demo

此正则表达式将匹配前面没有 http:///https:///www. 的任何 _ 后跟除空格以外的任意数量的任何字符(\S*).

C#:

var res = Regex.Replace(str, @"(?<!\b(?:https?://|www\.)\S*)_", string.Empty);