Процитирую старую поговорку:
Заставь это работать, сделай это правильно, сделай это быстро. (в таком порядке)
Поэтому, прежде чем переходить к каким-либо тяжелым шагам по оптомизации, просто напишите исходный простой соответствующий код (который в этом случае может потребовать предварительной компиляции ваших шаблонов, если вы можете). Запустите несколько тестов и посмотрите, не является ли производительность недостаточной, а затем оптимизируйте, если часть регулярного выражения является узким местом.
Если создание объекта (и очистка) является серьезным узким местом (по сравнению с самим анализом регулярных выражений), то вам может потребоваться реализовать собственное решение, использующее пул объектов (чтобы объекты не создавались, просто сбросьте и повторно из бассейна). Я сомневаюсь, что это приведет к какому-либо серьезному повышению производительности, поэтому вам следует сначала провести сравнительный анализ, чтобы увидеть, насколько это возможно (даже если вы улучшите производительность создания / очистки объектов на 50%, будет ли это того стоить?).