在下面的代码中,我有一小组数据;日期和价格。但是,我想只显示价格:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args){
String[] data = new String[4];
data[0]="Dec 10, 2015";
data[1]="116.04";
data[2]="Dec 9, 2015";
data[3]="46,361,357";
for (int i=0; i<data.length; i++){
String qq = "\\d+.[^\\s]\\d*.\\d+";
Pattern p2 = Pattern.compile(qq);
Matcher m2 = p2.matcher(data[i]);
while(m2.find()){
System.out.println(m2.group());
}
}
}
}
结果是:
10, 2015
116.04
46,361,357
如您所见,它不显示我想要的Dec 9
,但会显示Dec 10
。有人可以帮我解决这个问题吗?请注意,我不允许在这项工作中使用任何库。它只是一个正则表达式。
答案 0 :(得分:1)
您的价格的一个很好的定义如下:
^\\d+([.,]\\d+)*$
与你的相比,主要的改进是我确保通过在^...$
中包含正则表达式来匹配整个字符串。
此外,我不确定在这里使用正则表达式是个好主意。 Integer.parseInt上的try / catch会产生相同的结果。
答案 1 :(得分:0)