Я делаю программу для автоматизации написания некоторого кода на C (я пишу для разбора строк в перечисления с тем же именем)
Обработка строк в C не так уж велика.
Поэтому некоторые люди пытались заставить меня попробовать Python.
Я сделал функцию, которая должна удалить C-style /* COMMENT */
и //COMMENT
из строки:
Вот код:
def removeComments(string):
re.sub(re.compile("/\*.*?\*/",re.DOTALL ) ,"" ,string) # remove all occurance streamed comments (/*COMMENT */) from string
re.sub(re.compile("//.*?\n" ) ,"" ,string) # remove all occurance singleline comments (//COMMENT\n ) from string
Итак, я попробовал этот код.
str="/* spam * spam */ eggs"
removeComments(str)
print str
И это, очевидно, ничего не сделало.
Какие-нибудь предложения относительно того, что я сделал неправильно?
Есть поговорка, которую я слышал пару раз:
Если у вас есть проблема и вы пытаетесь решить ее с помощью Regex, у вас возникают две проблемы.
EDIT:
Оглядываясь на это спустя годы. (после более тщательного анализа)
Я думаю, что регулярное выражение могло быть правильным решением.
И простое регулярное выражение используется здесь «достаточно хорошо».
Возможно, я не подчеркнул этого достаточно в вопросе.
Это было для одного конкретного файла. Это не было хитрых ситуаций.
Я думаю, что было бы гораздо меньше усилий по поддержанию синтаксического анализа файла для регулярного выражения, чем для усложнения регулярного выражения в нечитаемый суп символа.