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