2013-03-20 128 views
0

我试图从一个字符串中拉出一个URL,稍后使用它创建一个超链接。我想能够做到以下几点: - 确定输入字符串包含一个URL - 从输入字符串 删除URL - 提取的URL存储在变量中供以后使用C#替换URL正则表达式

谁能帮助我有了这个?

+1

应当指出的是,没有几个例子,这个任务几乎是不可能更换输入。 – Destrictor 2013-03-20 18:34:36

+0

我在我自己的代码中使用了这个工具。我有正规表达的体面,但能够快速高效地测试它们,并帮助构建它们,这是真正的无价之宝。如果我有点损失,我会很乐意捐赠给这位开发人员。 http://www.ultrapico.com/Expresso.htm – Nevyn 2013-03-20 18:39:11

+1

http://madskristensen.net/post/Resolve-and-shorten-URLs-in-Csharp.aspx不错的起点 – 2013-03-20 18:40:02

回答

3

这里是在流行的格式识别的网址,如伟大的解决方案:

使用正则表达式是:

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/ 

不过,我会建议你去http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the看到工作的例子。

0

与输入

 string input = string.Empty; 
     var matches = Regex.Matches(input, 
         @"/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/"); 
     List<string> urlList = (matches.Cast<object>().Select(match => match.ToString())).ToList();