正则表达式:在不使用支持代码的情况下将不同长度的字符串拆分为多个组

Regex: Split string of varying length into multiple groups without using supporting code


示例 1test1:test2:test3:test4 将被分成 4 组。

  1. test1
  2. test2
  3. test3
  4. test4

示例 2123:abc 将被分成 2 组。

  1. 123
  2. abc

这可能吗? 谢谢,克里斯

是的,其实很简单:

/([^:]+)/ 

我希望这就是你的意思:)

更新

在你优化你的答案之后,你的意思是你想在一场比赛中有多个小组。这与您通常使用正则表达式的方式相反(您可能已经意识到这一点),但是由于您的工具的给定限制,您能做的最好的是一组有限的组,您必须从第一个开始阅读匹配。

我不熟悉你使用的工具,所以我不能肯定它是否会产生任何负面影响 side-effects,但这将是你能得到的最接近的。最多 8 个组的示例:

([^:]+)?:?([^:]+)?:?([^:]+)?:?([^:]+)?:?([^:]+)?:?([^:]+)?:?([^:]+)?:?([^:]+)?

不幸的是,处理不定组的正确解决方案是行不通的。您需要手动创建匹配组。只需根据需要(最多)为多个组复制以下内容:

([^:]+)?:?

它很丑,但可能会起作用。

但是,如果您需要完全动态的,那是不可能的。