我得到一个简单的字符串,我想从中提取一些值。这些值由空白字符分隔如下:
abc 0.00 11.00 0.00 4.50 0.00 124.00 27.56 0.01 1.44 0.89 0.40
我想获得这些值:abc,0.00,11.00,...
我试过了:
String line = "abc 0.00 11.00 0.00 4.50 0.00 124.00 27.56 0.01 1.44 0.89 0.40";
String regex = "^([\\w\\.]*)\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\\s+([\\w\\.])*\$";
Pattern ptrn = Pattern.compile(regex);
Matcher matcher = ptrn.matcher(line);
if(matcher.find())
{
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
System.out.println(matcher.group(5));
System.out.println(matcher.group(6));
System.out.println(matcher.group(7));
System.out.println(matcher.group(8));
System.out.println(matcher.group(9));
System.out.println(matcher.group(10));
System.out.println(matcher.group(11));
System.out.println(matcher.group(12));
}
我得到以下输出:
abc
0
0
0
0
0
0
6
1
4
9
0
我做错了什么?
答案 0 :(得分:4)
\
的末尾挂起String
。 ([\\w\\.]*)
代替([\\w\\.])*
示例强>
String line = "abc 0.00 11.00 0.00 4.50 0.00 124.00 27.56 0.01 1.44 0.89 0.40";
String[] items = line.split("\\s+");
System.out.println(Arrays.toString(items));
<强>输出强>
[abc, 0.00, 11.00, 0.00, 4.50, 0.00, 124.00, 27.56, 0.01, 1.44, 0.89, 0.40]
注意强>
由于您的数组是(0-)索引,您可以通过索引检索每个项目,例如items[0]
,items[1]
,... items[items.length - 1]
。