如何在 PyCharm 替换函数中使用正则表达式占位符

Zep*_*hyr 3 python regex pycharm

我有一个 Python 文件,其中有很多行,如下所示:

\n
df[\'A\'] = df.T + df.N / df.R\n
Run Code Online (Sandbox Code Playgroud)\n

我想用 替换每次df.something出现的情况df[\'something\'],因此上面的行变为:

\n
df[\'A\'] = df[\'T\'] + df[\'N\'] / df[\'R\']\n
Run Code Online (Sandbox Code Playgroud)\n

Ctrl我使用+激活替换功能R,然后勾选该Reg\xcc\xb2ex选项,并通过搜索 成功突出显示每个出现的情况df.[A-Z][A-Z]代表每个T、等,因为它是占位符N。\n我不知道如何在“替换为”框中使用相同的占位符,因此不知道要写什么:如果我重用(下图)作为占位符并写入,我会得到以下结果:R
[A-Z]df.[\'[A-Z]\']

\n
df[\'A\'] = df[\'[A-Z]\'] + df[\'[A-Z]\'] / df[\'[A-Z]\']\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

我应该在底部框中写什么作为占位符?

\n

Jan*_*Jan 5

您需要搜索

df\.([A-Z]+)
Run Code Online (Sandbox Code Playgroud)

并将其替换为

df\["$1"\]
Run Code Online (Sandbox Code Playgroud)
然后
df['A'] = df.T + df.N / df.R
Run Code Online (Sandbox Code Playgroud)

变成

df['A'] = df["T"] + df["N"] / df["R"]
Run Code Online (Sandbox Code Playgroud)

您需要启用正则表达式机制(右侧最后一个)。请记住[, 、].是正则表达式中的元字符,$1是第一个捕获的组内容。


对于另一个方向,你可以使用
df\['([^']+)'\]
Run Code Online (Sandbox Code Playgroud)

并将其替换为

df.$1
Run Code Online (Sandbox Code Playgroud)

但这仅适用于单引号。对于双引号和单引号使用

df\[(['"])(.+?)\1\]
Run Code Online (Sandbox Code Playgroud)

并将其替换为

df.$2
Run Code Online (Sandbox Code Playgroud)