Regex 如何围绕某个函数调用执行查找替换

Regex 如何围绕某个函数调用执行查找替换,regex,replace,pycharm,Regex,Replace,Pycharm,我在许多不同的文件中调用了很多到os.getenv('some_var')。我想用os.environ['some_var']替换所有这些 我知道如何将os.getenv的所有实例替换为os.environ,但不知道如何将(.*)替换为[.*],而不丢失其中的文本。尝试以下正则表达式: (os\.)[^()]*\(([^()]*)\) 将每个匹配项替换为\1environ[\2] 说明: (os\)-匹配os.并在组1中捕获 [^()]*\(-匹配任何既不是(也不是)后跟( ([^()]*

我在许多不同的文件中调用了很多到
os.getenv('some_var')
。我想用
os.environ['some_var']
替换所有这些

我知道如何将
os.getenv
的所有实例替换为
os.environ
,但不知道如何将
(.*)
替换为
[.*]
,而不丢失其中的文本。

尝试以下正则表达式:

(os\.)[^()]*\(([^()]*)\)
将每个匹配项替换为
\1environ[\2]

说明:

  • (os\)
    -匹配
    os.
    并在组1中捕获
  • [^()]*\(
    -匹配任何既不是
    也不是
    后跟
  • ([^()]*)
    -匹配既不是
    也不是
    的任何字符的0+次出现次数。此子字符串在组2中捕获
  • \)
    -匹配

您可以使用此正则表达式匹配文本并捕获括号内的文本

os.getenv\('([^']+)'\)
并将其替换为
os.environ['\1']

这个正则表达式基本上有三个部分

  • os.getenv\('
    )-这与
    os.getenv('
  • ([^']+)
    -它捕获括号中的任何文本,并将其捕获到group1中
  • \)
    -这与

某些变量能否包含另一组括号?不,绝对不能。