0

我有一个字符串

"foo:bar rty:qwe magic qwe" 

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

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

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

4

4 回答 4

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序列。

于 2013-07-25T21:32:30.843 回答
4

在 Python 中,不需要使用正则表达式。只是split

>>> "foo:bar rty:qwe magic qwe".split(None, 1)
['foo:bar', 'rty:qwe magic qwe']
>>> 
于 2013-07-25T21:31:32.520 回答
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]

于 2013-07-25T21:32:44.260 回答
1

在 Perl 中,您可以使用该split()函数并指定一个限制:

$s = "foo:bar rty:qwe magic qwe";
@result = split(' ',$s,2);
于 2013-07-25T21:35:29.940 回答