正则表达式提取字符串中的特定数字

时间:2016-04-13 06:56:28

标签: c# regex

string temp = "12345&refere?X=Assess9677125?Folder_id=35478";

我需要单独提取数字12345,我不需要数字9677125和35478。

我可以使用什么样的正则表达式?

4 个答案:

答案 0 :(得分:2)

以下是在字符串开头提取5位数字的正则表达式:

^(\d{5})&

如果长度是任意的:

^(\d+)&

如果终止模式不总是&

^(\d+)[^\d]

根据Sayse的评论,您只需重写为:

^(\d+)

如果终止是一些数字(例如999),那么:

^(\d+)999

答案 1 :(得分:1)

如果您只想提取第一个数字,则不需要正则表达式:

string temp = "12345&refere?X=Assess9677125?Folder_id=35478";

int first = Int32.Parse(String.Join("", temp.TakeWhile(c => Char.IsDigit(c))));

Console.WriteLine(first);  // 12345

答案 2 :(得分:0)

从你给我们的东西来看,这很简单:

var regex = new Regex(@"^(?<number>\d+)&");
var match = regex.Match("12345&refere?X=Assess9677125?Folder_id=35478");
if (match.Success)
{
    var number = int.Parse(match.Groups["number"].Value);
} 

编辑:当然,您可以使用Giorgi提供的任何组合替换new Regex的参数。

答案 3 :(得分:0)

如果您想要的数字始终位于字符串的开头并以&符号(&)结束,那么您根本不需要正则表达式。只需在&符号上分割字符串并获取结果数组的第一个元素:

String temp = "12345&refere?X=Assess9677125?Folder_id=35478";
var splitArray = String.Split('&', temp);
var number = splitArray[0]; // returns 12345

或者,你可以得到&符号的索引和substring到那一点:

String temp = "12345&refere?X=Assess9677125?Folder_id=35478";
var ampersandIndex = temp.IndexOf("&");
var number = temp.SubString(0, ampersandIndex); // returns 12345