Java正则表达式除了一些charcaters

时间:2015-12-19 13:35:18

标签: java regex

在下面的代码中,我有一小组数据;日期和价格。但是,我想只显示价格:

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。有人可以帮我解决这个问题吗?请注意,我不允许在这项工作中使用任何库。它只是一个正则表达式。

2 个答案:

答案 0 :(得分:1)

您的价格的一个很好的定义如下:

^\\d+([.,]\\d+)*$

与你的相比,主要的改进是我确保通过在^...$中包含正则表达式来匹配整个字符串。

此外,我不确定在这里使用正则表达式是个好主意。 Integer.parseInt上的try / catch会产生相同的结果。

答案 1 :(得分:0)

以下正则表达式会匹配以数字开头和结尾的字符串,并且可以包含任意数量的.,

^\d[\d.,]+\d$

请参阅a demo

Regular expression visualization