2012-02-23 150 views
3

我想從字符串中只獲取數字id。結果:123456如何使用正則表達式從字符串獲取id

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

編輯:

對不起,另一個號碼可以在文本。我想在id後得到第一個數字。

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

回答

6

用途:

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

謝謝你的回答。 – sinanakyazici 2012-02-23 14:34:56

+0

@sinanakyazici,不客氣。 – 2012-02-23 14:37:00

2

有人會給你一個C#實現,但它沿

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

線將匹配要麼&id=123456fkhkghkf?id=123456fjgjdfgj(所以它會獲得價值無論是在URL)並將其作爲匹配捕獲該數字。

+0

作爲參考,'''? &'和'='不需要轉義。至少在我見過的大多數正則表達式中 - 在任何情況下實際上都不需要在[]內部轉義,而'='不是特殊的字符。 – cHao 2012-02-23 14:16:52

+0

極有可能,但是因爲我不知道C#,所以爲了避免這種情況,我逃脫了它們:)逃避不需要它的字符不會造成任何傷害,所以安全性比對不起 – Joe 2012-02-23 14:27:23

+0

取決於正則表達式的風格。在某些口味中,除非特殊字符*被轉義,否則特殊字符並不特殊。 :P Vi在這方面往往特別惱人;至少vim有4種不同的「魔術」設置。 – cHao 2012-02-23 14:29:26

3

這取決於上下文 - 在這種情況下,它看起來像你解析URI和查詢字符串:

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())); 
相關問題