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

5

我有多个相同格式的初始文件,它们在不同的文件中。我试图为它们所有添加一个名为“newparameter”的新参数。我尝试使用PyCharm的查找和替换正则表达式功能来完成此操作,但迄今为止没有成功。

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

def __init__(self, param1, param2, param3, param4, param5, param6, param7, param8=None):

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

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

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

我做错了什么?

1个回答

6

$1 指的是第一个捕获组,但是根据您的正则表达式写法,它并没有任何捕获组!为了正确地进行反向引用,您需要在括号中捕获特定的字符串。

通过使用 \(\) 对括号进行转义,您可以捕获文字字符,但也意味着您不会将引用正确地绑定到捕获组。请改用以下正则表达式:

def __init__\((.*)\)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接