【问题标题】:Pycharm regex backreference replace errorPycharm正则表达式反向引用替换错误
【发布时间】:2019-12-06 05:16:33
【问题描述】:

我在相同格式的不同文件中有多个初始化文件。我正在尝试为所有这些添加一个名为“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")'

我做错了什么?

【问题讨论】:

    标签: regex pycharm


    【解决方案1】:

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

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

    def __init__\((.*)\)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2017-01-30
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多