PHP не перекомпилирует твой regex при каждом вызове preg_match.
Внутри ext/pcre живёт LRU-кэш на 4096 паттернов. Первый раз: pcre2_compile + pcre2_jit_compile. Все следующие — прямой указатель.
Поэтому один и тот же regex в цикле работает со скоростью нативного кода. JIT-паттерн уже в кэше.
Не генерируй паттерны динамически на лету, если можно этого избежать. Иначе кэш слетает.
@WebDev_Plus
Post #1528
611
