Я пытаюсь использовать флаг re.MULTILINE.Python re.sub multiline on string
Я читаю эти сообщения: Bug in Python Regex? (re.sub with re.MULTILINE), Python re.sub MULTILINE caret match, но это не сработает. Код:
import re
if __name__ == '__main__':
txt = "\n\
<?php\n\
/* Multi-line\n\
comment */\n\
$var = 1;\n"
new_txt = re.sub(r'\/\*[.\n]*?\*\/', '', txt, flags=re.MULTILINE)
print("\n=========== TXT ============")
print(txt)
print("\n=========== NEW TXT ============")
print(new_txt)
Выходной код:
=========== TXT ============
<?php
/* Multi-line
comment */
$var = 1;
=========== NEW TXT ============
<?php
/* Multi-line
comment */
$var = 1;
Но new_txt не должна содержать многострочный комментарий. Я хочу получить txt без многострочного комментария. Есть ли у вас какие-либо идеи ?
Вы должны использовать 're.S' флаг не' re.M' и поместите точку вне класса символов. –
В основном вы хотите, чтобы '[. \ N]' соответствовало чему-либо, но '* /' правильно? Почему бы не использовать '[^ \ * \ /] +'? Это сделало бы '\/\ * [^ \ *] * \ * \ /' совпадением вашего многострочного комментария без флагов. – Noxeus