string temp = "12345&refere?X=Assess9677125?Folder_id=35478";
我需要单独提取数字12345,我不需要数字9677125和35478。
我可以使用什么样的正则表达式?
答案 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