2012-02-23 8 views
3

stringから番号IDだけを取得したいとします。結果:123456Regexを使ってStringからIDを取得する方法

var text = "http://test/test.aspx?id=123456dfblablalab"; 

EDIT:

申し訳ありませんが、別の番号をテキストにすることができます。私はIDの後に最初の番号を取得したい。

var text = "http://test/test.aspx?id=123456dfbl4564dsf"; 

答えて

6

用途:参考のため

Regex.Match(text, @"id=(\d+)").Groups[1].Value; 
+0

お返事ありがとうございます。 – sinanakyazici

+0

@ sinanakyazici、よろしくお願いします。 –

2

誰かがあなたのC#実装を提供しますが、それは一致します

/[\?\&]id\=([0-9]+)/ 

の線に沿ってだのいずれか&id=123456fkhkghkfまたは?id=123456fjgjdfgj(そう、それはURLであるところはどこでも、それは値を取得します)数字をマッチとしてキャプチャします。

+0

を、 ''、 '? & 'と' = 'はエスケープする必要はありません。少なくとも私が見た正規表現のほとんどのフレーバーでは - 実際には '[]'の中でエスケープする必要はほとんどなく、 '='は特別な文字ではありません。 – cHao

+0

非常に可能性が高いですが、私はC#を知らないので、私はそれらをエスケープしました。それを必要としない文字をエスケープすると、何も害を及ぼさないので、ごめんなさいより安全です。 – Joe

+0

正規表現のフレーバーに依存します。いくつかのフレーバーでは、特別な文字はエスケープされない限り特殊ではありません。 :P Viはその点で特に厄介な傾向があります。 vimは、少なくとも、「魔法」の4つの異なる設定があります。 – cHao

3

それは文脈に依存 - あなたがウリとクエリ文字列の構文解析されているように、この場合にはそれが見えます:

var text = "http://test/test.aspx?id=123456dfblablalab"; 
Uri tempUri = new Uri(text); 
NameValueCollection query = HttpUtility.ParseQueryString(tempUri.Query); 
int number = int.Parse(new string(query["id"].TakeWhile(char.IsNumber).ToArray())); 
関連する問題