从字符串中删除下划线除了字符串中的链接

Man*_*ora 3 c# regex string html-email

我有一个文本段落,可能包含一些网址链接.我需要从该字符串中删除下划线"_".

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

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

我正在考虑使用一些正则表达式,但这将删除链接中的下划线,我不想要.我正在考虑取出这些链接,然后删除下划线,然后再添加文本中的链接,但正如我所说,链接可以是不同的顺序,即文本是动态内容.

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

Wik*_*żew 5

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

(?<!\b(?:https?://|www\.)\S*)_
Run Code Online (Sandbox Code Playgroud)

演示

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

C#:

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

  • 我可以在接下来的5分钟内接受你的回答,按照SO :) (3认同)
  • 对不起,它现在没有,我在开头错误地放置了`\ S*`.请刷新并再次单击演示链接. (2认同)