【发布时间】:2014-09-07 07:56:23
【问题描述】:
288007 327920 374740 000368 044575 082865 680798
717374 755879 811106 855460 920577 953515 996819 ......
我有一个包含数千个 6 位数字的字符串,我想借助正则表达式提取第 N 个数字之后的第 N 个数字。
假设我需要在第四个数字之后提取三个数字,那么结果应该是044575 082865 680798。
另一个例子如果我需要在第 10 个数字之后提取 2 个数字,那么结果应该是 855460 920577。
我不知道正则表达式是否可行,我认为FOR EACH 语句可能适用于我的情况。
我只能使用下面的代码提取每个六位数字。
Dim NumberMatchCollection As MatchCollection = Regex.Matches("String containing numbers", "(?<!\d)\d{6}(?!\d)")
For Each NumberMatch As Match In NumberMatchCollection
Dim ItemNumber As String = NumberMatch.Value
Next
编辑: 我不能保证每个分隔符都是一个空格、一个双空格、一个制表符或其他东西。我可以保证数字长度始终为 6,由空格或制表符分隔。
【问题讨论】:
-
为什么特别是正则表达式而不是
String.Split? -
Regex 不是必需的,任何其他建议和方法将不胜感激。
-
在您的示例中,某些数字未按列排列,例如
000368和680798向左移动了一个字符。这是代表您的真实数据还是只是拼写错误? -
@ErikE,这是我的真实数据,数字是否必须在列中?
-
@ErikE 我不能保证每个分隔符都是一个空格、一个双空格、一个制表符或其他东西。我可以保证数字长度始终为 6,由一些空格或制表符分隔。