用奇怪的图案拆分字符串

Kor*_*oly 0 regex

我有一个字符串

"foo:bar rty:qwe magic qwe" 
Run Code Online (Sandbox Code Playgroud)

我需要把它拆分成 ["foo:bar", "rty:qwe magic qwe"]

我的问题是右边的部分可能有很多单词用空格分隔(在":"之后)

无法想象这样的正则表达......有人可以帮忙吗?

amo*_*mon 5

我只是在下一个键之前拆分,使用前瞻.作为Perl代码:

say qq/"$_"/ for split /\s+(?=\w+:)/, "foo:bar rty:qwe magic qwe baz:qux";
Run Code Online (Sandbox Code Playgroud)

输出:

"foo:bar"
"rty:qwe magic qwe"
"baz:qux"
Run Code Online (Sandbox Code Playgroud)

与通过限制结果片段的数量来解决问题的其他答案不同(我也可以这样做:) split " ", $string, 2,这适用于任意数量的key: value value序列.