2

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

我有一个这样的网址:

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

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

谢谢

4

4 回答 4

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 从查询属性生成字典

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

然后,您可以访问这些值

queryValues["token"]

这会给你 123456

于 2012-11-22T03:41:32.727 回答
6

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

为了满足 aplhas 的需求,您可以执行以下任一操作:

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

或者

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

于 2012-11-22T03:12:20.987 回答
3

不要为此使用正则表达式。C#为此提供了内置方法!

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

在此处查看更多详细信息

于 2012-11-22T03:24:20.353 回答
0

采用

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

并在C#中通过以下方式获取值:

myMatch.Groups["TokenValue"].Value
于 2012-11-22T03:18:31.233 回答