正则表达式模式匹配器

时间:2016-01-14 18:02:38

标签: java regex

不太熟悉正则表达式,但是我有一块似乎没有按预期工作的代码块,我想我知道为什么,但是会寻找解决方案。

这是字符串“whereClause”

where filter_2_id = 20 and acceptable_flag is true

String whereClause = report.getWhereClause();
        String[] tokens = whereClause.split("filter_1_id");
        Pattern p = Pattern.compile("(\\d{3})\\d+");
        Matcher m = p.matcher(tokens[0]);
        List<Integer> filterList = new ArrayList<Integer>();
        if (m.find()) {
            do {
                String local = m.group();
                filterList.add(Integer.parseInt(local));
            } while (m.find());
        }

当我调试时,它看起来像是(m.find()){但它只是完全跳过它。是因为正则表达式模式(\ d {3} \ d +)只查找大于3位的数字?我实际上需要它来扫描任何一组数字,所以我应该把它包含在0-9里面吗?

请帮助/建议

1 个答案:

答案 0 :(得分:0)

您可以尝试使用正则表达式"=\\s*(\\d+)",然后将m.group()修改为m.group(1)。这应该寻找一个等号,可能后面跟着一些空格,然后是一个或多个数字的序列。将数字部分放在括号中会创建一个组,该组将是组1(组0是整个匹配)。