如何使用正则表达式从一串数字中提取中间数字

Pro*_*bie 0 c# regex

我有一个包含两种格式的大数字的数据字段:

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可以随机弹出其他数字组,所以我必须确保我从正确的位置抓取数字.

我希望能更好地解释它.

afu*_*ama 5

使用Split()方法.?然后,如果它总是具有相同的位置,您可以获得所需的数字,或者您可以循环遍历数组以查找所需的数字.