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

可能重复:
从Uri获取单个查询参数

我有一个像这样的URL:

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

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

谢谢

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

为了迎合aplhas你也可以做到:

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

要么

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

使用System.URI类

URI类的Query属性以字符串forms返回整个查询

 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

不要使用正则表达式。 C#内置了这个方法!

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

在这里查看更多细节

使用

 (?:token=)(?[^&]+) 

并在C#中得到的值只有

 myMatch.Groups["TokenValue"].Value