正则表达式将由空格分隔的整数列表拆分为组

时间:2016-11-28 13:47:50

标签: regex

在您投票或标记为重复之前 - 请继续阅读(特别是免责声明)。

我有一个简单的整数列表,例如:1 23 765 23 25 67 12(数字不重要,任何长度都可以)。我想将此输出拆分为一个匹配,每个数字在单独的组中,因此我创建了一个正则表达式:

(\d+)(?:\s(\d+))*

我对此的理解如下:

  • 将数字捕获到第一组
  • 找到一组空格(我知道\s不仅是一个空格)和一个数字并将此数字放入下一组

但是我在Regex101上获得的输出是不同的 - 它只返回我的初始列表中的第一个和最后一个数字(在这种情况下:112)。这是LINK

如果输出中有更多行,则每行都是一个单独的匹配,其中的所有整数都分成组。

免责声明:我知道我可以通过使用支持字符串操作的任何编程语言进行拆分来实现这一点,但我只是好奇为什么这不起作用而且我正在寻找一个说明。我无法通过互联网找到任何这种解决方案的例子,因为毕竟我发现的每个解决方案都暗示使用split()(或者这个方法在<insert your programming language here>中命名)。

1 个答案:

答案 0 :(得分:0)

您可以使用\b作为单词边界,并匹配捕获组中的每个整数,如此

\b(\d+)\b

Regex101:https://regex101.com/r/PZlHze/3 编辑:我想提一下,正则表达式还要求g全局标志匹配的不仅仅是第一个!