我使用perl one liner从C文件中删除注释,但它也删除了在单词之间有asterik(*)的行,例如
static void *
这是我正在使用的一个班轮:
'perl -0777 -pe ''s{/\*.*?\*/}{}gs'' ' sourceFile ' > ' destFile
有人可以建议吗?
由于
答案 0 :(得分:2)
这个问题在perlfaq中得到解答。
“如何使用正则表达式从文件中删除C样式注释?”
答案 1 :(得分:0)
s{/\*((?!\*/).)*\*/}gs
“寻找/*
,向前看,看不到*/
序列并吃一个字符,重复看看直到*/
”
但请注意,由于注释可以嵌套或/* */
括在引号中,因此您永远无法使用正则表达式可靠地解析它们。
答案 2 :(得分:0)
你的正则表达式对我有用。我刚刚纠正了你的引用,我不知道你是否正在使用它,或者它是一个复制和粘贴的人工制品。
perl -0777 -pe 's{/\*.*?\*/}{}gs' sourceFile.c >destFile.c
(我在linux上使用bash
。)
在Ideone上试用。