Если вы хотите многократно сопоставлять это регулярное выражение, вы должны сделать:
Pattern p = Pattern.compile("(?i)[^0-9.,-\ ]");
Matcher m = p.matcher(targetString);
Затем использовать методы matcher в цикле, чтобы получить желаемое совпадение.«I» - это флаг нечувствительности к регистру (который на самом деле вам не нужен, так как не указано никаких символов), но я не уверен, что эквивалентен флагу «g». Я думаю, что это просто попыткаприменять шаблон повторно к целевой строке, а не пытаться сопоставить всю строку, что и делает приведенный выше код.
Кроме того, вышеприведенный шаблон будет соответствовать только одному символу за раз, на самом деле вы можете захотеть [^0-9.,-\ ]*
, который будет жадно совпадать с 0 или более символами.Я бы прочитал документы по классу Pattern на вашем месте.