不太熟悉正则表达式,但是我有一块似乎没有按预期工作的代码块,我想我知道为什么,但是会寻找解决方案。
这是字符串“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里面吗?
请帮助/建议
答案 0 :(得分:0)
您可以尝试使用正则表达式"=\\s*(\\d+)"
,然后将m.group()
修改为m.group(1)
。这应该寻找一个等号,可能后面跟着一些空格,然后是一个或多个数字的序列。将数字部分放在括号中会创建一个组,该组将是组1(组0是整个匹配)。