可能重复:
从 Uri 获取单个查询参数
我有一个这样的网址:
http://somedomain.com/website/webpage.aspx?token=123456&language=English
我的目标是从中提取 123456 。查询字符串参数中只能有一个支付 ID。我可以使用什么样的正则表达式?顺便说一句,我正在使用 C# (.NET)。
谢谢
可能重复:
从 Uri 获取单个查询参数
我有一个这样的网址:
http://somedomain.com/website/webpage.aspx?token=123456&language=English
我的目标是从中提取 123456 。查询字符串参数中只能有一个支付 ID。我可以使用什么样的正则表达式?顺便说一句,我正在使用 C# (.NET)。
谢谢
使用 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
token=(\d+)
应该做的伎俩
为了满足 aplhas 的需求,您可以执行以下任一操作:
token=([a-zA-Z0-9+/=]+)
明确匹配您期望的字符。这匹配“token=”,然后捕获所有匹配字符类的后续字符,即az、AZ、0-9、+、/和=。
或者
token=([^&#]+)
匹配任何字符,除了你知道可以完成令牌的字符。这匹配 "token=",然后捕获所有字符,直到第一个&
或#
字符串的结尾。
不要为此使用正则表达式。C#为此提供了内置方法!
var queryString = string.Join(string.Empty, url.Split('?').Skip(1));
System.Web.HttpUtility.ParseQueryString(queryString)
采用
(?:token=)(?<TokenValue>[^&]+)
并在C#中通过以下方式获取值:
myMatch.Groups["TokenValue"].Value