用直接访问替换函数调用的正则表达式

Regular expression for replacing function call with direct access

我想替换第一种格式的函数调用:

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

有了这个:

data?.field1?.field2 || defaultVal

在项目中使用正则表达式搜索替换或可能使用 sed 或其他工具。

我尝试了一些表达式,但无法弄清楚如何命名和拆分部分以进行替换。有什么想法吗?

我会使用 perl:

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

get\(.*,\s*'(.+)',\s*(.+)\) 正则表达式(参见 regex demo)匹配 get(,捕获最后两个参数,用点拆分第一个参数,用 ?. 将它们连接起来,然后在第二次捕获后附加 ||