首页 > 解决方案 > 如何在 PyCharm 替换功能中使用正则表达式占位符

问题描述

我有一个 Python 文件,其中有很多这样的行:

df['A'] = df.T + df.N / df.R

我想用 替换每个df.something出现df['something'],所以上面的行变成:

df['A'] = df['T'] + df['N'] / df['R']

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

df['A'] = df['[A-Z]'] + df['[A-Z]'] / df['[A-Z]']

在此处输入图像描述

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

标签: pythonregexpycharm

解决方案


你需要搜索

df\.([A-Z]+)

并将其替换为

df\["$1"\]

然后
df['A'] = df.T + df.N / df.R

变成

df['A'] = df["T"] + df["N"] / df["R"]

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


对于另一个方向,您可以使用
df\['([^']+)'\]

并将其替换为

df.$1

不过,这仅适用于单引号。对于双引号和单引号,请使用

df\[(['"])(.+?)\1\]

并将其替换为

df.$2

推荐阅读