从字符串中删除下划线,除了字符串中的 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);
我有一个文本段落,其中可能包含一些 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);