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 に答える