Я работаю над регулярным выражением для запуска завершения синтаксического метода php для deoplete в vim. Есть два типа методов, которые должны быть заполнены статическими методами с двойным двоеточием (::) и методами экземпляра со стрелкой (->).
[мои] правила для методов экземпляра
- Знак доллара
- За ним следует первый символ (названия объекта) - это символ альфа или подчеркивание
- Любые символы после первого являются буквенно-цифровыми или подчеркиванием
- Стрелка указывает начало имени метода и может появляться сразу после имени объекта или на следующей строке
Regex для методов экземпляра
\$\([a-zA-Z_][a-zA-Z0-9_]*\)\v?\h?\->
[мои] правила для статических методов
- Должен начинаться с заглавной буквы
- Любые символы после первого являются буквенно-цифровыми или символами подчеркивания, в качестве альтернативы может использоваться целое слово (self, parent или static).
- Двойное двоеточие указывает начало имени метода
Статические методы Regex
\(self|parent|static|[A-Z][a-zA-Z0-9_]*\)::
Вопрос в том, могу ли я сделать это быстрее, используя магию или что-то в этом роде, особенно статический метод regex?
Тестовый текст
// Should match
$this
->
// Should match
$someObject->
// Should not match
"somethingInAString->"
// Should not match
stdClass::
// Should match
SomeClass::
// Should match
parent::