所以在这里,我试图做一些程序员可能不得不做的事情。
我在我的代码中有所有那些嵌套的宏,我想在每个#endif旁边发表评论#if它关闭 - 如果还没有评论。正则表达式可以帮我吗?直到现在*和+在Notepad ++中太贪心,即使我使用了理论上的懒惰版本*?和+? ...
例如这个
#if A
Code
#if B
Code
#if C
Code
#endif
Code
#endif /* B */
Code
#endif
进入这个
#if A
Code
#if B
Code
#if C
Code
#endif /* C */
Code
#endif /* B */
Code
#endif /* A */
答案 0 :(得分:1)
这可以用一个正则表达式完成吗?不,不!
可以使用仅正则表达式在Notepad ++中完成吗? HELL YEAH !!!
$1,$2
。. matches newline
替换为\r\n
。这使得正则表达式在Windows上更加简单。如果需要,您可以稍后再更改。\n
替换为#endif
,清除所有现有的^#endif.*
标记。
#endif
和#if...
行,因此我们会将#endif
替换为^(?!#(if|endif)).*
来忽略所有其他行。因此;$0
是我们的“忽略”标记。;
- #if
对只忽略它们之间的行。#endif
^#if(.+)\n((;.*\n)*)#endif
。 ;#if$1\n$2;#endif /* $1 */
的评论 -
最低嵌套级别的#if
,然后使用#endifs
标记它们,因此下次点击“全部替换”时,系统会忽略它们。;
替换为^;(.+?\n)
,删除忽略标记。VOILA!