Я просто нашел ошибку в некотором коде, который я не писал, и я немного удивлен:
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}");
всегда предпочитает ссылку на нестатический шаблон?