我正在编写一个程序来自动化编写一些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
但它似乎什么都没有做。
你有什么建议,我做错了什么吗?
我听过一句话:
如果你有问题,并试图用正则表达式解决它,那么你最终会得到两个问题。
编辑:
多年后回顾这个问题(经过更多的解析经验),
我认为正则表达式可能是正确的解决方案。
而且此处使用的简单正则表达式已经“足够好”了。
我可能没有在问题中强调这一点。
这是针对一个具体文件的。该文件没有棘手的情况。
我认为保持要解析的文件简单到足以使用正则表达式进行解析,比将正则表达式复杂化成难以阅读的符号组合要容易维护得多。(例如,要求该文件仅使用//
单行注释。)