Регулярное выражение для многострочного макроса C в Python - PullRequest
2 голосов
/ 29 апреля 2011

Я пытаюсь удалить макросы из заголовков C, но у меня проблема с удалением многострочных макросов. Так например

#define macro(char)  \
//macro still continues \
//macro still continues \

Это регулярное выражение для удаления однострочных макросов, но я не совсем уверен, как включить \ n в регулярное выражение.

text=re.sub('#([\W\w\s\d])*?\n', '', text, re.S)

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011
text=re.sub('#([\W\w\s\d])*?(\n.*?\\\\)*\n', '', text, re.S | re.M)

должен сделать трюк

РЕДАКТИРОВАТЬ: исправить по @ Blackie123

0 голосов
/ 23 апреля 2015
text=re.sub(r'^\s*#(?:.*\\\r?\n)*.*$', '', text, flags=re.MULTILINE)

Это удаляет все многострочные макросы в тексте. Существует \ r? \ N для совместимости с окончаниями строк Windows. Одна важная вещь - это запись "flags =" перед флагами, потому что четвертый аргумент в re.sub () - это число, поэтому принятый выше ответ совершенно неверен, а метод интерпретирует указанные флаги как аргумент счетчика.

https://docs.python.org/3/library/re.html#re.sub

Ошибка в регулярном выражении Python? (повторно с re.MULTILINE)

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