Я только что нашел ошибку в каком-то коде, который не написал, и немного удивлен:
Pattern pattern = Pattern.compile("\\d{1,2}.\\d{1,2}.\\d{4}");
Matcher matcher = pattern.matcher(s);
Несмотря на то, что этот код плохо работает на входных данных, мы получаем (потому что он пытается найти даты в формате 17.01.2011 и возвращает такие вещи, как 10396/2011, а затем падает, потому что он не может разобрать дату, но что действительно не в этом вопрос;) Интересно:
не является ли смысл Pattern.compile оптимизацией скорости (путем предварительной компиляции регулярных выражений)?
не должны ли все "статические" шаблоны быть всегда скомпилированными в статические шаблоны?
Существует так много примеров, всев Интернете, где один и тот же шаблон всегда перекомпилируется с использованием Pattern.compile , и я начинаю задаваться вопросом, вижу ли я вещи или нет.
Нет (при условии, что строкастатический и, следовательно, не динамически создаваемый):
static Pattern pattern = Pattern.compile("\\d{1,2}.\\d{1,2}.\\d{4}");
всегда предпочтительнее, чем ссылка на нестатический шаблонсть?