Há uma pequena otimização que você pode fazer combinando a primeira letra das duas palavras que começam com s
, como
(s(elf|tatic)|parent|[A-Z][a-zA-Z0-9_]*)::
mas, na realidade, isso será uma diferença minúscula na velocidade, mas uma diferença maior na legibilidade, então eu não aconselharia isso.
A verdadeira questão é se os seus regexes estão sendo otimizados e compilados pelo deoplete. Eu fiz uma varredura rápida da fonte e não ficou claro para mim se esse é o caso.
Se você permitir que eu saia em um, ...
Geralmente as vantagens dos regexes (particularmente os determinísticos) é que eles podem ser implementados sem <> sem lookhead, transformando-os em um autômato de estado finito leia mais em algum lugar como este ; você processa a entrada de um caractere no momento e faz uma transição para outro estado, com zero backtracking. Se esse método é usado, é muito rápido de qualquer maneira, e as otimizações de mão que você poderia fazer seriam feitas no estágio de transformar o autômato de estado finito não-determinístico em um determinístico.