Используйте совпадение вместо утилиты поиска и замены в ноутбуке Jupyter - PullRequest
2 голосов
/ 03 июня 2019

В моем блокноте Jupyter я хочу заменить функции печати с функцией обертки.

Я могу сопоставить оператор печати с регулярным выражением javascript print\\(.*\\), но оттуда я не уверен, как снова использовать совпадение в текстовом поле замены:

def verb_printer(msg, verb):
    if verb:
        print(msg)

Я пытался что-то вроде verb_printer($1), чтобы получить доступ к матчу, но это не сработало.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 04 июня 2019

Ваше первоначальное выражение просто отлично, мы бы только добавили группу захвата (), чтобы при замене на verb_printer($1) наша желаемая строка уже была захвачена:

(print\(.*\))

Демо

Тест

const regex = /(print\(.*\))/gm;
const str = `def verb_printer(msg, verb):
    if verb:
        print(msg)
`;
const subst = `verb_printer($1)`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);
...