Из следующего вопроса Как автоматически удалить определенные директивы и комментарии препроцессора из заголовочного файла C?
header = "" #some string p_macro = re.compile("#if.*?#endif", re.MULTILINE + re.DOTALL) p_comment = re.compile("/\*.*?\*/", re.MULTILINE + re.DOTALL) # Example ... # print re.sub(p_macro, '', header) # print re.sub(p_comment, '', header)
Это, однако, приводит к сбою в случае, подобном
#endif // #if 0
Что можно добавить в выражение для избежания этого?
p_macro = re.compile("#(end)?if.*?#(?(1)|end)if",re.DOTALL)
re.MULTILINE бесполезен, потому что в RE
Возможно, вам придется бесконечно добавлять такую коррекцию .....