带有URL提取的正则表达式

本文关键字:正则表达式 提取 URL 带有 | 更新日期: 2023-09-27 17:59:44

我在这个项目中使用C#,基本上我需要的是一种将纯文本转换为HTML的方法,我找到了一个正则表达式(实际上我认为是在Stack Overflow上),用于将文本中的链接转换为HTML中的锚定链接,它看起来像这样:

        Regex regx = new Regex(@"https?://([-'w'.]+)+(:'d+)?(/(['w/_'.]*('?'S+)?)?)?", RegexOptions.IgnoreCase);
        MatchCollection mactches = regx.Matches(input);
        foreach (Match match in mactches)
        {
            output = output.Replace(match.Value, String.Format("<a href='"{0}'" target='"_blank'">{0}</a>", match.Value));
        }

它工作得很好,但我发现了一个缺陷,它没有将破折号(-)视为URL的一部分,所以当它碰到第一个破折号时,它会关闭锚标记。所以我显然需要在正则表达式中以某种方式包含破折号,但问题是我对RegEx一无所知,它在我看来就像俄语。有人知道我需要对RegEx表达式进行什么小的编辑,使其在URL中包含破折号作为允许的字符吗?

带有URL提取的正则表达式

试试这个:@"https?://([-'w'.]+)+(:'d+)?(/([-'w/_'.]*('?'S+)?)?)?"

我在第二个字符类(方括号中的部分)中添加了一个短划线,以匹配URL中非域名部分的短划线。

我使用这个支持ftpfile方案以及http:

@"'b((https?|ftp|file)://|(www|ftp)'.)[-A-Z0-9+&@#/%?=~_|$!:,.;'(')]*[A-Z0-9+&@#/%=~_|$]"

它将识别包含由&分隔的参数的URL,如下所示:

http://www.cbsnews.com/video/watch/?id=7400904n&tag=re1.channel

原件位于从文本中提取URL(Regex)。我稍微修改了一下,以识别一个包含括号的URL,如下所示:

http://msdn.microsoft.com/en-us/library/ms686722(v=VS.85).aspx

您需要用这个正则表达式指定RegexOptions.IgnoreCase,当然您可以通过用'w替换A-Z来简化。