带有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中包含破折号作为允许的字符吗?
试试这个:@"https?://([-'w'.]+)+(:'d+)?(/([-'w/_'.]*('?'S+)?)?)?"
我在第二个字符类(方括号中的部分)中添加了一个短划线,以匹配URL中非域名部分的短划线。
我使用这个支持ftp
和file
方案以及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
来简化。