私は文字列を持っています
"foo:bar rty:qwe magic qwe"
私はそれを分割する必要があります["foo:bar", "rty:qwe magic qwe"]
私の問題は、右側の部分(「:」の後)にスペースで区切られた多くの単語が存在する可能性があることです。
そのような正規表現を想像できません...誰か助けてくれますか?
私は文字列を持っています
"foo:bar rty:qwe magic qwe"
私はそれを分割する必要があります["foo:bar", "rty:qwe magic qwe"]
私の問題は、右側の部分(「:」の後)にスペースで区切られた多くの単語が存在する可能性があることです。
そのような正規表現を想像できません...誰か助けてくれますか?
先読みを使用して、次のキーの前で分割します。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
シーケンスに対して機能します。
Python では、正規表現を使用する必要はありません。ただsplit
。
>>> "foo:bar rty:qwe magic qwe".split(None, 1)
['foo:bar', 'rty:qwe magic qwe']
>>>
あなたの質問を正しく理解できたかどうかはわかりませんが、これはあなたの例に対してすべきことです。解決策は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]