java中的解析结果

java中的解析结果,java,regex,string-parsing,Java,Regex,String Parsing,我从另一个进程收到一个字符串,格式如下: {{"data1""data2"}{"column1""column2""column3"}} 双引号中的括号之间可以有任意数量的列或数据。我需要将每个数据点放入一个列表,并将每个列放入另一个列表 我正在用java解析它。。。由于数据和列的数量未知,使用regex时遇到一些问题。有没有图书馆或者其他我可以用的东西 希望这有意义,谢谢 不确定正则表达式是否是最佳解决方案。我会用 以上内容将在数组中包含一些空字符串,但排除空字符串并不重要 如果你用番石榴,

我从另一个进程收到一个字符串,格式如下:

{{"data1""data2"}{"column1""column2""column3"}}
双引号中的括号之间可以有任意数量的列或数据。我需要将每个数据点放入一个列表,并将每个列放入另一个列表

我正在用java解析它。。。由于数据和列的数量未知,使用regex时遇到一些问题。有没有图书馆或者其他我可以用的东西


希望这有意义,谢谢

不确定正则表达式是否是最佳解决方案。我会用

以上内容将在数组中包含一些空字符串,但排除空字符串并不重要

如果你用番石榴,你可以:

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));
Splitter mySplitter=Splitter.on(“\”)
.trimpresults()
.省略空字符串();
Iterable data=mySplitter.split(myString.substring(2,midIndex));
Iterable columns=mySplitter.split(myString.substring(
midIndex+2,myString.length()-2));
通常被推荐作为解析器解决方案(类似于Lex/Yacc,但在Java世界中),但如果数据格式很简单(例如,数据/列元素中没有大括号),我可能会使用regexp来提取内部数据实体,以及内部列实体(即大括号之间的数据)和进一步拆分,也许使用另一个regexp


两个不同的regexp(或者一个regexp和一个后续的字符串拆分操作)可能比一个catch-all regexp简单得多。

谢谢!我正在研究类似的方法,计算括号和引号的数量以确定格式是否正确,然后根据引号的数量进行拆分。它不需要漂亮,所以这应该可以做到。我已经弄乱了一些东西,我认为首先将它分成两个括号组是必要的,因为两个括号组之间的元素数量可能不均匀。。。谢谢你的建议。
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));