如何从C#中的URL查询字符串中提取值?

时间:2012-11-22 03:10:13

标签: c# regex

  

可能重复:
  Get individual query parameters from Uri

我有一个这样的网址:

http://somedomain.com/website/webpage.aspx?token=123456&language=English

我的目标是从中提取123456。 query-string参数中只能有一个支付ID。我可以使用什么样的正则表达式?顺便说一句,我正在使用C#(.NET)。

由于

4 个答案:

答案 0 :(得分:7)

使用System.URI类

URI类的Query属性将整个查询作为字符串

返回
Uri bUri = new Uri("http://somedomain.com/website/webpage.aspx
                    ?token=123456&language=English");

var query = bUri.Query.Replace("?", "");

现在查询将具有字符串值"token=123456&language=English"

然后使用LINQ从查询属性

生成一个Dictionary
var queryValues = query.Split('&').Select(q => q.Split('='))
                   .ToDictionary(k => k[0], v => v[1]);

然后,您可以以

的形式访问这些值
queryValues["token"]

会给你123456

答案 1 :(得分:5)

token=(\d+)应该做的伎俩

为了迎合aplhas,您也可以这样做:

token=([a-zA-Z0-9+/=]+)明确匹配您期望的字符。这匹配“token =”,然后捕获与字符类匹配的所有后续字符,即a-z,A-Z,0-9,+,/和=。

token=([^&#]+)匹配任何字符,除了您知道的字符可以完成令牌。这匹配“token =”,然后捕获所有字符,直到第一个&#或字符串结尾。

答案 2 :(得分:3)

不要使用正则表达式。 C#有内置的方法!

var queryString = string.Join(string.Empty, url.Split('?').Skip(1));
System.Web.HttpUtility.ParseQueryString(queryString)

See more details here

答案 3 :(得分:0)

使用

(?:token=)(?<TokenValue>[^&]+)

并在C#中获取只需值:

myMatch.Groups["TokenValue"].Value