【问题标题】:Remove underscore from string except from the link in string从字符串中删除下划线,但从字符串中的链接除外
【发布时间】:2015-12-05 01:12:48
【问题描述】:

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

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

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

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

任何指导都将不胜感激,我将从那里接受。谢谢。

【问题讨论】:

    标签: c# regex string html-email


    【解决方案1】:

    您可以使用可变宽度的负后视(?<!\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);
    

    【讨论】:

    • 你太棒了!!您的回答是 99% 完美,在您的演示中,请将此 - www.google.com 更改为 - www.goo_gle.com。这也是匹配的,请您检查一下。
    • 对不起,现在不行,我一开始放错了\S*。请刷新并再次点击演示链接。
    • 是的,现在可以了,我刷新了页面。这是完美的,谢谢。
    • 我可以在接下来的 5 分钟内接受你的回答,按照 SO :)
    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 2016-04-23
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多