如何在某些函数调用周围进行查找替换

时间:2019-01-30 16:37:28

标签: regex replace pycharm

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

我知道如何替换的所有实例os.getenvos.environ而不是如何更换(.*)[.*]而不丧失内的文本。

2 个答案:

答案 0 :(得分:1)

尝试此正则表达式:

@(...)

将每个匹配项替换为-join

Click for Demo

说明:

  • (Get-Content D:\ServerName.txt) -join ','-匹配(os\.)[^()]*\(([^()]*)\) 并在组1中捕获
  • \1environ[\2]-匹配0+次出现的(os\.)既不是os.也不是[^()]*\(的任何字符
  • (-匹配0+次出现的既不是)也不是(的字符。此子字符串在第2组中捕获
  • ([^()]*)-匹配(

答案 1 :(得分:1)

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

os.getenv\('([^']+)'\)

并用os.environ['\1']

替换

此正则表达式基本上分为三个部分,

  • os.getenv\('-从字面上匹配os.getenv('
  • ([^']+)-捕获括号中的任何文本并将其捕获到group1中
  • '\)-从字面上匹配')

Demo