我有一个这样的网址:
http://somedomain.com/website/webpage.aspx?token=123456&language=English
我的目标是从中提取123456。 query-string参数中只能有一个支付ID。我可以使用什么样的正则表达式?顺便说一句,我正在使用C#(.NET)。
由于
答案 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从查询属性
生成一个Dictionaryvar 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)
答案 3 :(得分:0)
使用
(?:token=)(?<TokenValue>[^&]+)
并在C#中获取只需值:
myMatch.Groups["TokenValue"].Value