Разве «статические» шаблоны всегда не должны быть статичными?

Я только что обнаружил ошибку в каком-то коде, который я не писал, и я немного удивлен:

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. скомпилировать , и я начинаю задаваться вопросом, вижу я что-то или нет.

Нет (при условии, что строка статична и, следовательно, не создается динамически):

static Pattern pattern = Pattern.compile("\\d{1,2}.\\d{1,2}.\\d{4}");

всегда предпочтительнее, чем ссылка на нестатический шаблон ?

23
задан Gugussee 8 February 2011 в 15:53
поделиться