Регулярное выражение для замены вызова функции прямым доступом - PullRequest
0 голосов
/ 10 января 2020

Я хотел бы заменить вызов функции в первом формате:

get(store, 'data.field1.field2', defaultVal) // there can be more fields on the second part

следующим:

data?.field1?.field2 || defaultVal

с использованием поиска по регулярному выражению в проекте или, возможно, с помощью sed или другие инструменты.

Я пробовал несколько выражений, но не мог понять, как назвать и разделить разделы для замены. Есть мысли?

1 Ответ

2 голосов
/ 11 января 2020

Я бы использовал perl:

perl -pe 's{get\(.*,\s*'"'"'(.+)'"'"',\s*(.+)\)}{join("?.", split(/\./,$1)) . " || " . $2}ge' file

Регулярное выражение get\(.*,\s*'(.+)',\s*(.+)\) (см. Демонстрацию regex ) соответствует get(, захватывает два последних аргумента, разбивает первый один с точкой, соединяющей их с ?. и добавляющий || со вторым захватом.

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