我正在尝试从字符串中获取匹配值。我必须从给定的字符串中得到两种数字。数字从 5 开始,后接 6 位数字。 ex(5******
) 从1开始接5位(1*****
)。
我使用以下正则表达式:
(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
不会匹配,因为匹配的序列在中间。
关于c# - 鉴于c#中的整数开头,从字符串中获取特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793982/