2012-02-23 112 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())); 
相关问题