строка, регулярные выражения в python - PullRequest
0 голосов
/ 23 марта 2011

Из следующего вопроса Как автоматически удалить определенные директивы и комментарии препроцессора из заголовочного файла 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

Что можно добавить в выражение для избежания этого?

1 Ответ

1 голос
/ 23 марта 2011
p_macro = re.compile("#(end)?if.*?#(?(1)|end)if",re.DOTALL)

re.MULTILINE бесполезен, потому что в RE

нет символа '^' и нет $.

Возможно, вам придется бесконечно добавлять такую ​​коррекцию .....

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