正規表現が最適なソリューションかどうかはわかりません。私はString.splitを使用します。
int midIndex = myString.indexOf("}{");
String[] datas = myString.substring(2, midIndex).split("\"");
String[] columns = myString.substring(midIndex+2, myString.length()-2).split("\"");
上記では、配列にいくつかの空の文字列が含まれますが、空の文字列を除外するのは簡単です。
Guava's Splitterを使用した場合は、次のことができます。
Splitter mySplitter = Splitter.on("\")
.trimResults()
.omitEmptyStrings();
Iterable<String> datas = mySplitter.split(myString.substring(2, midIndex));
Iterable<String> columns = mySplitter.split(myString.substring(
midIndex+2, myString.length()-2));