我有一个包含两种格式的大数字的数据字段:
553000.468...705.46.0000000 <- Format 1
553000.469.5501000.704.47.0000000 <- Format 2
Run Code Online (Sandbox Code Playgroud)
我只需要中间包含703,704或705的三位数字
我可以使用正则表达式来拉这些数字,如下所示:
Regex num = new Regex(@"(?<number>7\d+) ?");
Match number = num.Match(numb);
if (number.Success)
Console.WriteLine(num.Match(numb).Result("${number}"));
Run Code Online (Sandbox Code Playgroud)
但是,只有在中间数字之前没有7时才有效
在我看来,接近它的最佳方式是专注于".".问题是我无法弄清楚如何在"."之后匹配字符.我可以在第一个"."之前提取数字.通过做这个:
Regex num = new Regex(@"(?<number>.\d+) ?");
Match number = num.Match(numb);
if (number.Success)
Console.WriteLine(num.Match(numb).Result("${number}"));
Run Code Online (Sandbox Code Playgroud)
这将给我在此期间之前的一切.我正在使用此处的备忘单,但它没有显示如何在"."之后匹配字符.如果我能弄清楚如何做到这一点,那么我可以重复模式,直到我得到我需要的数字,然后我可以使用上面的代码来摆脱之后的数字.这可能不是最有效的方法,但我从来没有使用过正则表达式,说实话我发现它很混乱.
编辑:
我被告知我需要提供更多的例子或更好地解释它.我有一个数据库表,其中包含一个名为Glsec的列.该字段包含两种格式的数字; 553000.468 ... 705.46.0000000和553000.469.5501000.704.47.0000000是两种格式的示例.
在553000.468 ... 705.46.0000000格式中,我只需要在第一组数字中找到的数字703,704或705 ...(左起第14个字符)
在553000.469.5501000.704.47.0000000格式中,我只需要从左侧(第20个字符)找到第四组数字703,704或705.
这组三人中的数字可能包含000到999之间的任何数字,但我只需要三个数字.也有可能703,704,705可以随机弹出其他数字组,所以我必须确保我从正确的位置抓取数字.
我希望能更好地解释它.