У меня есть следующий текст:
#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
как встречающуюся ноль или более раз, и ничего не выбирается.