【发布时间】:2019-12-17 05:19:10
【问题描述】:
我是正则表达式的新手。
我尝试删除项目中未使用的代码,例如
/*
// random unmanaged annotation
foo = var;
doSomething();
multilineFunction(a,
b);
*/
并留下“非代码”注释
/*
real annotation
*/
我尝试查找并替换为“/* 和 */ 之间的内部包含行 endwith ;”的正则表达式但它不适用于我的正则表达式。如何制作那个正则表达式?
我在 (/\*)(.*\n)*?(.*\*/) 的 /* */ 内部进行了尝试,并且 包含行以 ; (/\*)(.*\n)*?(.*;\n)(.*\n)(.*\*/) 结尾,但是这个正则表达式找到了 */ 的最后一个匹配项,并且可能是脏的。
编辑:我只想将其作为 IDE 中的替换功能。我现在通过写python代码解决了,但我还是很好奇。
【问题讨论】:
-
如何区分“代码”和“非代码”?
-
@Sweeper 如果注释中没有分号,我认为这不是代码注释。
-
Regex 从根本上来说是错误的工具。以下是关于 HTML,但基本推理对于任何上下文无关语言都是相同的:stackoverflow.com/questions/590747/…
-
@tripleee 这很好,但不能过滤包含分号。
-
我会改用github.com/eliben/pycparser 之类的东西。
标签: regex