特定のセパレーターが最初に出現したときに、文字列を2つの部分に分割する方法を探しています。文字列が次のようになっている場合、これは簡単に実行できます。
String s = "prefix.key value";
String[] a = s.split("[ :=]",2);
ただし、慣例により、文字列にはエスケープされた区切り文字が含まれる場合があります(区切り文字の直前に「\」が含まれます)。だから私は正規表現を更新しました-文字列:
String s = "prefix\ key value";
String[] a = s.split("[^\\\\][ :=]",2);
これにより、文字列がほぼ適切な場所で分割されますが、キーの「y」が切り捨てられます。これは、正規表現が区切り文字とその前の文字の両方に一致するためです。split()メソッドは一致した部分を切り取り、残りの文字列のみを返します。
split()を使用して、返された配列の文字列の終了文字を調べる実用的なソリューションがありますが、これは非常に複雑で時間がかかる方法のようです。
誰かもっと良いアイデアがありますか?