Преимущество именованного регулярного выражения (по крайней мере, с boost) состоит в том, что его можно скомпилировать только один раз. Это преимущество в производительности, которое может иметь большое значение, если регулярное выражение применяется много раз.
Между прочим, я бы никогда не поставил подобное руководство в формулировках типа «НИКОГДА не делай этого». Правда в том, что
После того, как вы сохраните регулярное выражение, все равно невозможно случайно перекомпилировать его каждый раз.
(если вы сохраните его, но забудете static const
и флаги, чтобы регулярное выражение сохраняло свой скомпилированный конечный автомат и т. д.)
Кроме того, некоторые библиотеки регулярных выражений даже выполняют автоматическое кэширование скомпилированного регулярного выражения, которое использует статический метод (MRU) для его оптимизации. В некоторых случаях это может быть даже лучше, чем вручную сохранять регулярное выражение «named».