可能重複:
Get individual query parameters from Uri如何從C#中的URL查詢字符串提取值?
我有一個URL是這樣的:
http://somedomain.com/website/webpage.aspx?token=123456&language=English
我的目標是從中提取123456。查詢字符串參數中只能有一個付款ID。我可以使用什麼樣的正則表達式?順便說一句,我正在使用C#(.NET)。
感謝
可能重複:
Get individual query parameters from Uri如何從C#中的URL查詢字符串提取值?
我有一個URL是這樣的:
http://somedomain.com/website/webpage.aspx?token=123456&language=English
我的目標是從中提取123456。查詢字符串參數中只能有一個付款ID。我可以使用什麼樣的正則表達式?順便說一句,我正在使用C#(.NET)。
感謝
token=(\d+)
應該做的伎倆
爲迎合aplhas以及您可以執行:
token=([a-zA-Z0-9+/=]+)
明確匹配您期望的字符。這與「token =」相匹配,然後捕獲與字符類匹配的所有後續字符,即a-z,A-Z,0-9,+,/和=。
或
token=([^&#]+)
除了你知道可以完成令牌的那些匹配任何字符。這與「token =」匹配,然後捕獲所有字符,直到第一個&
,#
或字符串的末尾。
使用
(?:token=)(?<TokenValue>[^&]+)
,並在C#中獲得只是由值:
myMatch.Groups["TokenValue"].Value
不要使用正則表達式這一點。 C#有內置的方法!
var queryString = string.Join(string.Empty, url.Split('?').Skip(1));
System.Web.HttpUtility.ParseQueryString(queryString)
我寧願使用'System.Uri'而不是'Split'來獲取查詢字符串。 – nhahtdh
使用的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
退房[的System.Uri(HTTP ://msdn.microsoft.com/en-us/library/system.uri.aspx)和[HttpUtility.ParseQueryString](http://msdn.microsoft.com/en-us/library/ms150046.aspx) – nhahtdh