Regex
оптимизация - очень сложная тема, и ее следует выполнять с помощью некоторых инструментов.Например, мне нравится Regex101 , который вычисляет для нас количество шагов, которые Regex
двигатель должен был сделать, чтобы соответствовать pattern
- payload
.Для вашего pattern
и данного примера он печатает:
1 match, 22976 steps (~19ms)
Первое, что вы всегда можете сделать, это сгруппировать похожие детали в одну группу.Например, FROM
, INTO
и JOIN
выглядят одинаково, поэтому мы можем написать регулярное выражение, как показано ниже:
(?:\s(?:FROM|INTO|JOIN)\s|\sNEXTVAL[\s\W]*|^UPDATE\s)[\s`'"]*([\w\.-_]+)
Для приведенного выше примера Regex101 , печать:
1 match, 15891 steps (~13ms)
Попробуйте найти некоторые онлайн-инструменты, которые объясняют и оптимизируют Regex
, такие как myregextester и подсчитывают, сколько шагов нужно сделать движку.