我有一个字符串
"foo:bar rty:qwe magic qwe"
我需要将其拆分为["foo:bar", "rty:qwe magic qwe"]
我的问题是右边部分可能有很多单词用空格分隔(在“:”之后)
无法想象这样的正则表达......有人可以帮忙吗?
答案 0 :(得分:5)
我只是在下一个键之前拆分,使用前瞻。作为Perl代码:
say qq/"$_"/ for split /\s+(?=\w+:)/, "foo:bar rty:qwe magic qwe baz:qux";
输出:
"foo:bar"
"rty:qwe magic qwe"
"baz:qux"
与通过限制结果片段的数量来解决问题的其他答案不同(我也可以这样做:split " ", $string, 2
),这适用于任意数量的key: value value
序列。
答案 1 :(得分:4)
在Python中,不需要使用正则表达式。只需split
。
>>> "foo:bar rty:qwe magic qwe".split(None, 1)
['foo:bar', 'rty:qwe magic qwe']
>>>
答案 2 :(得分:2)
我不确定我是否理解你的问题,但这可以为你的例子做到这一点。解决方案是Java:
String str = "foo:bar rty:qwe magic qwe";
String[] arr = str.split(" ", 2);
System.out.println(Arrays.toString(arr));
打印
[foo:bar, rty:qwe magic qwe]
答案 3 :(得分:1)
在Perl中,您可以使用split()
函数并指定限制:
$s = "foo:bar rty:qwe magic qwe";
@result = split(' ',$s,2);