Python re.sub с флагом не заменяет все случаи

В документах Python говорится:

ре. МУЛЬТИЛИНИЯ: При определении символ образца '^' соответствует в начале строки и в начале каждой строки (сразу после каждой новой строки)... По умолчанию, '^' соответствует только в начале строки...

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

>>> import re
>>> s = """// The quick brown fox.
... // Jumped over the lazy dog."""
>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.\n// Jumped over the lazy dog.'
57
задан Aran-Fey 3 July 2019 в 12:16
поделиться

1 ответ

Посмотрите на определение re.sub :

re.sub(pattern, repl, string[, count, flags])

4-м аргументом является количество, Вы используете re.MULTILINE (который равняется 8) как количество, не как флаг.

Любое использование параметр, передаваемый по имени:

re.sub('^//', '', s, flags=re.MULTILINE)

Или компиляция regex сначала:

re.sub(re.compile('^//', re.MULTILINE), '', s)
117
ответ дан Aran-Fey 24 November 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: