PhpStorm находит и заменяет регулярное выражение

#regex #phpstorm

#регулярное выражение #phpstorm

Вопрос:

Я ужасно разбираюсь в регулярных выражениях, и мне нужно заменить все функции, которые имеют только один параметр, на этот один параметр. Иначе удалите вызов функции и оставьте параметр, если есть только 1 параметр, в противном случае игнорируйте его.

 Some.functionName( OneParameter );
Some.functionName( OneParameter, TwoParameter );
 

Таким образом, с приведенным выше некоторым.functionName( OneParameter ); станет

 OneParameter
 

Моя единственная идея — что-то вроде:

 ^Some.functionName([!,])
 

Таким образом, в основном найдите все подобные функции, в которых нет запятой, и удалите вызов функции вокруг нее.

Ответ №1:

Заменить: Some.functionname(([^,)]*))

С помощью: $1

[^,)]* соответствует любой последовательности, которая не содержит запятой или закрывающей скобки. Таким образом, это будет соответствовать внутренней части списка параметров, если он не содержит никаких запятых.

Обратите внимание, что это не сработает, если у вас есть вложенные вызовы функций, например

 Some.functionname(otherfunc(1));
 

потому что внутреннее ) положит конец матчу. Регулярные выражения не очень хороши для сопоставления сбалансированных группировок.