Pycharm正则表达式反向引用替换错误

use*_*911 4 regex pycharm

我在相同格式的不同文件中有多个 init 文件。我正在尝试为所有这些参数添加一个名为“newparameter”的新参数。我正在尝试使用 pycharm 的查找和替换正则表达式功能来执行此操作,但到目前为止未成功。

我有一个初始化函数如下(删除了参数的实际名称)

def __init__(self, param1, param2, param3, param4, param5, param6, param7, param8=None):
Run Code Online (Sandbox Code Playgroud)

正则表达式查找文本: def __init__\(.*\)

正则表达式替换文本: def __init__($1, newparam="Default")

查找文本有效,只是替换不起作用。我得到的错误是:替换错误。您输入了格式错误的替换字符串 'def __init__($1,newparam="Default")'

我究竟做错了什么?

Nic*_*eed 5

$1指的是第一个捕捉组,但因为它是写的,你的正则表达式不具有任何捕获组!为了正确反向引用,您需要捕获括号中的特定字符串。

\(and转义括号\)意味着您可以捕获文字字符,但也意味着您不会将引用正确绑定到捕获组。试试这个正则表达式:

def __init__\((.*)\)

这将捕获参数列表中的内容,同时匹配(不捕获)括号本身。