我有以下文字:Perl的正则表达式多零个或多个正好
#ifdef blah
a
#else
b
#endif
#ifdef blah
c
#endif
我想创建一个可以用来删除一个Perl的正则表达式/更换#ifdef blah/#endif
和任何他们所包裹和如果它存在,则保留#else
之下的任何内容。执行操作后,上面的文字应该是:
b
我已经试过这样的事情: perl -i.bak -pe 'BEGIN{undef $/;} s/^#ifdef blah.*(^#else blah(.*))?#endif blah/\2/smg' test.c
然而,他们似乎是标志着#else
如出现零次或多次问题,没有选择。
在输入中是否嵌套了'#ifdef's? – Cameron 2011-03-23 00:36:11