Java 从一个长字符串中提取字符串

Java 从一个长字符串中提取字符串,java,regex,string,parsing,Java,Regex,String,Parsing,我有一根这样的绳子 “[0.01,3.45]、[5.674,8.712]、[4.321,8.892]、[3.412,6.781]” 我需要提取每对数字,以便每对数字都是字符串数组中的一个单独字符串 i、 e.我想要: {“0.01,3.45”、“5.674,8.712”、“4.321.8.892”、“3.412,6.781”} 这是我的代码: Pattern pattern = Pattern.compile("\\[(.*?)\\]"); String[] result = p

我有一根这样的绳子

“[0.01,3.45]、[5.674,8.712]、[4.321,8.892]、[3.412,6.781]”

我需要提取每对数字,以便每对数字都是字符串数组中的一个单独字符串

i、 e.我想要: {“0.01,3.45”、“5.674,8.712”、“4.321.8.892”、“3.412,6.781”}

这是我的代码:

    Pattern pattern = Pattern.compile("\\[(.*?)\\]");
    String[] result = pattern.split(myString);
。。我得到{,“,”,“,”,“,”,“}

我也尝试过一些不同的正则表达式,但它们只是给了我一个带有一个(长)字符串元素的数组,这显然是我也不想要的

问题是正则表达式还是我应该使用不同的代码


谢谢。

为什么不用括号和逗号(
],[
)分开呢


我的答案是,我认为您应该使用不同的代码(即不是regexs),我更愿意利用数据类似于Json的外观

您应该考虑使用JSON解析库解析字符串到java <代码>列表< /> >(dognose指出输入实际上不是JSON)。然后,您可以连接该对象的组件,不管您喜欢什么,并构造任何必要的数组或字符串。


Json解析库的示例有很多。Google Gson是第一个想到的示例,但您可以尝试其他示例并找到您最喜欢的示例。

正则表达式是正确的。您需要使用

List<String> result = new ArrayList<String>();
Matcher matcher = pattern.matcher(myString);

while(matcher.find()){
    result.add(matcher.group(1));
}
List result=new ArrayList();
Matcher-Matcher=pattern.Matcher(myString);
while(matcher.find()){
结果:添加(匹配组(1));
}
group(1)
为您提供正则表达式的第一组(即parantheses中的所有内容)。如果您需要数组作为结果,您可以通过
result.toArray()转换列表。


如果您使用Pattern.split,它将使用正则表达式作为分隔符,因此您可以获得匹配之间的所有内容,但不能获得匹配本身。

您的正则表达式没有达到预期效果。(split使用正则表达式进行拆分,而不是保留正则表达式)……考虑起始点,然后在边节点上或周围播放:这是可以轻松解决的。在<代码>上拆分,[< /代码>,按您的期望继续进行。或者在<代码> >代码>中,并将其伪装成JSON。该示例无效。JSON。好点-它可以通过“[…]”环绕有效JSON。,但在这一点上,它会变得和正则表达式解决方案一样混乱。如果要从结果中去掉第一个开头“[”和最后一个结尾“]”,请尝试myString.substring(1,myString.length()-1)。split(“\]”,\[);
List<String> result = new ArrayList<String>();
Matcher matcher = pattern.matcher(myString);

while(matcher.find()){
    result.add(matcher.group(1));
}