Я создаю программу для автоматизации написания некоторого кода на C (я пишу для синтаксического анализа строк в одноименные перечисления) C обработка строк не так уж велика. Поэтому некоторые люди навязывают мне попробовать python.
Я сделал функцию, которая должна удалить C-стиль /* 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: Оглядываясь назад на эти годы позже. (после справедливого более сильного анализа)
Я думаю, что регулярное выражение, возможно, было правильным решением. И простое регулярное выражение используется здесь "достаточно хорошо". Возможно, я не подчеркнул этого в вопросе. Это было для одного конкретного файла. У этого не было сложных ситуаций. Я думаю, что было бы намного меньше обслуживания, чтобы файл анализировался достаточно просто для регулярного выражения, чем для усложнения регулярного выражения в нечитаемый суп символа.