Java 从一个长字符串中提取字符串
我有一根这样的绳子 “[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”} 这是我的代码: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
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));
}