2

重複の可能性:
Uri から個々のクエリ パラメータを取得する

次のような URL があります。

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

私の目標は、そこから 123456 を抽出することです。query-string パラメーターに指定できる支払い ID は 1 つだけです。どのような正規表現を使用できますか? ちなみに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 を使用して、クエリ属性から Dictionary を生成します。

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 に答える