Как сделать замену вокруг вызова некоторой функции - PullRequest
0 голосов
/ 30 января 2019

У меня много звонков в разных файлах на os.getenv('some_var').Я хотел бы заменить все это на os.environ['some_var'].

Я знаю, как заменить все экземпляры os.getenv на os.environ, но не знаю, как заменить (.*) на [.*] без потери текста внутри.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы можете сопоставить текст и захватить текст внутри скобок, используя это регулярное выражение,

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

И заменить его на os.environ['\1']

Это регулярное выражение в основном состоит из трех частей,

  • os.getenv\(' - Это буквально соответствует os.getenv('
  • ([^']+) - Это захватывает любой текст, который есть в круглых скобках, и захватывает его в group1
  • '\) - Этобуквально соответствует ')

Демо

0 голосов
/ 30 января 2019

Попробуйте это регулярное выражение:

(os\.)[^()]*\(([^()]*)\)

Замените каждый матч на \1environ[\2]

Нажмите для демонстрации

Объяснение:

  • (os\.) - соответствует os. и захват в группе 1
  • [^()]*\( - соответствует 0+ вхождений любого символа, который не является ниa (, ни ), за которым следует (
  • ([^()]*) - соответствует 0+ вхождений любого символа, который не является ни (, ни ).Эта подстрока фиксируется в группе 2
  • \) - соответствует )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...