用奇怪的图案拆分字符串

时间:2013-07-25 21:29:54

标签: regex

我有一个字符串

"foo:bar rty:qwe magic qwe" 

我需要将其拆分为["foo:bar", "rty:qwe magic qwe"]

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

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

4 个答案:

答案 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);