Regex найти заменить, чтобы добавить параметр функции - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь найти и заменить некоторые вызовы функций в программе py.Идея состоит в том, чтобы добавить некоторый логический параметр к каждому вызову, найденному в проекте.Я искал решения в интернете, потому что я совсем не знаю науку о регулярных выражениях ... Это кажется основным упражнением для ребят из регулярных выражений, но все же.

В моем случае у меня много звонковфайлы:

myFunction("test")

Моя задача найти и заменить этот вызов на:

myFunction("test", false)

Не могли бы вы помочь мне написать регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Попробуйте эту команду:

sed -re 's/(myFunction)[[:space:]]*\([[:space:]]*("test")[[:space:]]*\)/\1(\2, false)/' SOURCE_FILENAME

Если вы предпочитаете заменить существующий исходный файл на обновленный, напишите -i SOURCE_FILENAME вместо SOURCE_FILENAME.

.определение шаблона для соответствия вызову функции, который вы хотите обновить:

  • myFunction (очевидно) соответствует тексту myFunction;
  • [[:space:]] соответствует любому символу пробела, в основном пробелам и символам табуляции.
  • [[:space:]]* соответствует нулю или более символов пробела.
  • \( и \) соответствуют буквенным скобкам в тексте вашей программы;
  • ( и ) - это регулярные выражения метасимволы , которые ничего не соответствуют, но ("test") соответствует "test" и захватывает сопоставленный текст для дальнейшего использования.

Обратите внимание, что этот шаблон захватывает две вещи, используя ( и ).("test") является вторым из них.

Теперь давайте рассмотрим общую структуру команды Sed 's/.../.../'.s означает «заменить», поэтому 's/.../.../' - это команда Седа substitution .

Между первым и вторым слэшем идет шаблон, который мы только что обсуждали.Между вторым и третьим слешами идет текст замены, который Sed использует для замены совпадающей части любой строки текста вашей программы, которая соответствует шаблону.В тексте замены \1 и \2 являются обратными ссылками , которые помещают текст, ранее захваченный с использованием ( и ).

Итак, вот оно.Я не только помог вам написать регулярное выражение, но и показал, как оно работает, чтобы в следующий раз вы могли написать свое собственное.

0 голосов
/ 07 февраля 2019

См. Это:

import re

#Replace all white-space characters with the digit "9":

str = "The rain in Spain"
x = re.sub("\s", "9", str)
print(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...