Удаление вызовов функций из строк с помощью регулярных выражений - PullRequest
0 голосов
/ 09 июня 2018

Допустим, у меня есть строка,

$bagel = parser(1);
$potato = parser(3+(other var));
$avocado = parser(3-(var1+var2+var3));
$untouchedtoast = donotremove(4);

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

$bagel = 1;
$potato = 3+(other var);
$avocado = 3-(var1+var2+var3);
$untouchedtoast = donotremove(4);

Я пробовал% s / parser (.) // g, но он заменял только все слева от внутренней части.Пробовал несколько других подстановочных знаков, но я думаю, что мне нужно как-то передать переменную из входного регулярного выражения в выходное регулярное выражение, и я не уверен, возможно ли это.Если это имеет значение, я делаю это в vim.

Мысли?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Попробуйте это:

search: \w\(|\)(?=;)
replace: blank
0 голосов
/ 09 июня 2018
%s/parser(\(.\+\));/\1;/

Поиск parser();, извлечение всего внутри () с использованием группы \(.\+\), замена всего выражения на группу (\1), добавление точки с запятой (так как оно было использовано поисковым выражением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...