Regex 使用正则表达式在第一个空格/冒号上拆分/分隔字符串

Regex 使用正则表达式在第一个空格/冒号上拆分/分隔字符串,regex,go,Regex,Go,我正在尝试使用正则表达式拆分字符串。例如: 12 13: 14: 15 => One-12, Two-13 , Three-14: 15 我正在尝试使用以下正则表达式: ^(?P< one>.*)\\s(?P< two>.*):\\s(?P< three>.*)$ ^(?P*)\\s(?P*):\\s(?P*)$ 因此,在我看来,“one”应该是第一个“space”(\s)之前的值,然后直到下一个冒号(:)之前的值应该是“two”,之后的所有值都应

我正在尝试使用正则表达式拆分字符串。例如:

12 13: 14: 15 => One-12, Two-13 , Three-14: 15
我正在尝试使用以下正则表达式:

^(?P< one>.*)\\s(?P< two>.*):\\s(?P< three>.*)$
^(?P*)\\s(?P*):\\s(?P*)$
因此,在我看来,“one”应该是第一个“space”(\s)之前的值,然后直到下一个冒号(:)之前的值应该是“two”,之后的所有值都应该是“three”

但我得到的结果是:1-12 13:,2-14,3-15


注意:这是Golang类型的正则表达式,但我想这是一个一般正则表达式问题。请帮我解决这个问题。

问题可能是它试图对最左边的图案进行最长的匹配。如果是这样的话,试着改变你原来的想法

^(?p*)\\s(?p*):\\s(?p*)$

不允许在这些字符之间使用冒号-
[^:::
如果与常规sed正则表达式类似。为了安全起见,如果一行中可能有两个以上的冒号,请在第二部分也这样做

^(?p[^::]*)\\s(?p[^:]*):\\s(?p.*)$

编辑:
在将
\\s
更改为
\s
并删除图案名称中的原始空格后,这似乎会产生不同。同样。

大家注意:与许多语言相比,go正则表达式是有限的,因为它们没有反向引用或任何使其行为难以预测的东西。尽管如此,我仍然不理解这个问题:\OP,也许你可以在中构建一个示例并精确地给出你期望的确切输出?我怀疑原因是go(大概是这样)还尝试匹配给定模式的最长可能序列。。。
here......^