重複の可能性:
Uri から個々のクエリ パラメータを取得する
次のような URL があります。
http://somedomain.com/website/webpage.aspx?token=123456&language=英語
私の目標は、そこから 123456 を抽出することです。query-string パラメーターに指定できる支払い ID は 1 つだけです。どのような正規表現を使用できますか? ちなみにC#(.NET)を使っています。
ありがとう
重複の可能性:
Uri から個々のクエリ パラメータを取得する
次のような URL があります。
http://somedomain.com/website/webpage.aspx?token=123456&language=英語
私の目標は、そこから 123456 を抽出することです。query-string パラメーターに指定できる支払い ID は 1 つだけです。どのような正規表現を使用できますか? ちなみに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 を使用して、クエリ属性から Dictionary を生成します。
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