在另一个URL的查询部分中提取URL

时间:2013-05-12 08:47:39

标签: c# html regex

如何从像这样的字符串中提取有效的URL

h*tps://www.google.com/url?q=h*tp://www.site.net/file.doc&sa=U&ei=_YeOUc&ved=0CB&usg=AFQjCN-5OX

我想提取此部分:h*tp://www.site.net/file.doc,这是我有效的网址。

4 个答案:

答案 0 :(得分:5)

添加System.Web.dll程序集并使用HttpUtility类和静态方法。 示例:

using System;
using System.Web;


class MainClass
{
    public static void Main (string[] args)
    {
        Uri uri = new Uri("https://www.google.com/url?q=http://www.site.net/file.doc&sa=U&ei=_YeOUc&ved=0CB&usg=AFQjCN-5OX");
        Uri doc = new Uri (HttpUtility.ParseQueryString (uri.Query).Get ("q"));
        Console.WriteLine (doc);
    }
}

答案 1 :(得分:1)

我不知道您的其他字符串是什么样的,但如果您的“有效网址”介于第一个=和第一个&之间,则可以使用:

(?<==).*?(?=&)

它基本上会查找第一个=,并在下一个&之前匹配任何内容。

经过测试here

答案 2 :(得分:1)

您可以使用split功能

    string txt="https://www.google.com/url?q=http://www.site.net/file.doc&sa=U&ei=_YeOUc&ved=0CB&usg=AFQjCN-5OX";

    txt.split("?q=")[1].split("&")[0];

答案 3 :(得分:0)

在这个特殊情况下,您发布的字符串可以执行此操作:

string input = "your URL";
string newString = input.Substring(36, 22) ;

但是,如果URL的初始部分的长度发生变化,并且您想要提取的部分的长度发生变化,那么也行不通。