Не слишком знакомы с регулярным выражением, но у меня есть блок кода, который, похоже, не работает должным образом, я думаю, что знаю почему, но искал бы решение.regex pattern matcher
Вот строка «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 внутри?
Помощь/совет пожалуйста
однако, если вы посмотрите на строку, там есть номер ... мне это не нужно, просто любые числа после знака = – Buccaneer
Вы не предоставили образец ввода и ожидаемый результат – anubhava
'\ d' будет соответствовать 1 значению. Это то же самое, что и '[0-9]'. Выражение '{3}' означает соответствие предыдущего шаблона ровно 3 раза. – dsh