Поиск и замена Jupyter Notebook не так жадны, как JavaScript в regex101 - PullRequest
0 голосов
/ 24 июня 2018

У меня есть ряд logger.*() функций, которые я хочу преобразовать в простые операторы print() в блокноте Jupyter.Я уже изменил начало строк: logger.*(.Теперь мне нужно исправить хвост и изменить ", e на " % (e:

print("(%s):\n"
        "    Failed to load logger" % (e, ))

logger.error("(%s):\n"
        "    Validation Testing errors occurred. '%s'",
        e, report_file)

logger.critical("(%s):\n"
        "    Failed to return Parsed Report "
        "    in debug mode.", e)

logger.critical("(%s):\n"
        "    Error loading template.", e)

Используя Regex101 для проверки моего Regex на JavaScript, я написал

print\("[\s\S.]*(", e)

Но в Jupyter находят изаменить, это захватывает только до print("(%s)\n".

1 Ответ

0 голосов
/ 24 июня 2018

Предварительный просмотр поиска и замены показывает только одну строку. Тем не менее, regex replace работает в нескольких строках. Ваш образец строки может быть заменен как предложено:

print\("[\s\S]*?", e\)

В то время как диалоговое окно показывает 0 соответствует замене в любом случае:

enter image description here

Примечание. Я изменил ваш шаблон поиска. Модифицированная точка должна соответствовать lazy, [\s\S]*?, чтобы избежать слишком большого соответствия. Также я удалил группу захвата, похоже, она вам не нужна.


Обновление : Оказалось, что группа захвата должна быть обратной, чтобы заменить рассматриваемую строку (слава xtian):

Поиск:

(print\("[\s\S.]*)", e

Заменить:

$1 " % (e,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...