我有一个像这样的字符串
" [0.01,3.45],[5.674,8.712],[4.321,8.892],[3.412,6.781]"
我需要提取每对数字,以便每对都是String数组中的单独字符串
即。我想要: {&#34; 0.01,3.45&#34;&#34; 5.674,8.712&#34;&#34; 4.321.8.892&#34;&#34; 3.412,6.781&#34;} < / p>
这是我的代码:
Pattern pattern = Pattern.compile("\\[(.*?)\\]");
String[] result = pattern.split(myString);
..我得到{&#34;&#34;,&#34;,&#34;,&#34;,&#34;,&#34;,&#34;}
我也试过了一些不同的正则表达式,但是他们给了我一个带有一个(长)字符串元素的数组,这显然是我不想要的
问题是正则表达式还是我应该使用不同的代码?
感谢。
答案 0 :(得分:0)
为什么不拆分括号和逗号(],[
)?
String myString = "[0.01,3.45],[5.674,8.712],[4.321,8.892],[3.412,6.781]";
// remove start and close brackets
myString = myString.substring(1, myString.length() - 1);
String[] result = myString.split("\\],\\[");
System.out.println(Arrays.toString(result));
// [0.01,3.45, 5.674,8.712, 4.321,8.892, 3.412,6.781]
答案 1 :(得分:0)
我的回答是我认为你应该使用不同的代码(即不是正则表达式)。我更愿意利用类似Json的数据外观。
您应该考虑使用Json解析库将字符串解析为java List<List<BigDecimal>>
(因为dognose指出输入为给定的实际上不是json)。然后,您可以根据需要连接该对象的组件并构造任何必要的数组或字符串。
有很多Json解析库的例子。谷歌Gson是第一个想到的例子,但你可以尝试其他人并找到你最喜欢的。
答案 2 :(得分:0)
正则表达式是正确的。你需要使用像
这样的东西List<String> result = new ArrayList<String>();
Matcher matcher = pattern.matcher(myString);
while(matcher.find()){
result.add(matcher.group(1));
}
group(1)
为你提供了第一组正则表达式(这是parantheses中的所有内容)。如果您需要数组,则可以按result.toArray()
如果您使用Pattern.split,它将使用正则表达式作为分隔符,因此您可以获得匹配项之间的所有内容,但不会获得匹配项。