我有以下文字: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