从字符串中获取具体的数字,以c#中的整数开头#
问题描述:
我试图从字符串中获得匹配的自尊。我必须从给定的字符串中得到两种数字。数字从5开始,由6位数字开始。 ex(5******
),从1开始后取5位数字(1*****
)。从字符串中获取具体的数字,以c#中的整数开头#
我用下面的regexex:
(5)[\d]{6}
(1)[\d]{5}
代码:这里
var sampleId5 = Regex.Match(input, @"(5)[\d]{6}");
if (sampleId5.Success)
{
string test = sampleId5.Value;
}
var sampleId1 = Regex.Match(input, @"(1)[\d]{5}");
if (sampleId1.Success)
{
string test1 = sampleId1.Value;
}
的问题是,我是否通过5106542
它返回两者协调的结果。我也试过(^5)[\d]{6}
。尽可能地,它不工作。
我只需要5*****
*。任何帮助都会得到真正的重视。
答
问题是您的表达式不会对匹配的位置做任何要求,所以他们在中间找到匹配。
如果你需要找到适合自己的标准独立的数字,加上你的表情两侧\b
,以确保没有字母/数字两边:
var sampleId1 = Regex.Match(input, @"\b(1)[\d]{5}\b");
// ^^ ^^
现在表达只考虑孤立的数字序列,5106542
不会匹配,因为匹配的序列位于中间。
+0
谢谢巴迪。它的工作。很抱歉,迟到的确认。 –
答
试试这个: ^(5 \ d {6} | 1 \ d {5})
你应该得到的整数,则只需选中的第一位。 但是,您可能希望在正则表达式的末尾添加“$”或\ b(如dasblinkenlight指出的那样)。
'(^ 5)[\ d] {6} =^5 \ d {6}'有什么问题? –
不确定,因为问题不明确:您是在寻找['\ b(5 \ d {6} | 1 \ d {5})\ b'](http://regexstorm.net/tester?p=% 5cb(5%5cd%7b6%7d%7c1%5cd%7b5%7d)%5cb&i = 5106542)与'Regex.Matches'?请参阅[本演示](http://ideone.com/TpMlHz)。 –
是否有一个原因,您需要验证完全数字的字符串?有时候只是'10000 ryanyuyu