import re
source_content = '\n'.join([
'#ifdef TYPEZERO',
' int someint = 42;',
'#endif',
'void abc ( int value) {',
' return 5 ** 2.5',
'}',
'',
'abc',
'#ifdef TYPEA', # <---- begin identifier, may contain leading/trailing whitespaces
'#include "some_header.h"', # <---- I want these lines
' #include "some_other_header23.h"', # <---- I want these lines
' #else ', # optional stop identifier, may contain leading/trailing whitespaces
'double in_fact_int = 5;', # some irrelevant content
' #endif ', # final stop identifier, may contain leading/trailing whitespaces
'',
'a = 5',
'#ifdef TYPEB',
' abc = 23.5;',
'#endif',
])
print(re.findall(r'#ifdef\s+TYPEA\s*(.*?)(?=\s*#(?:else|endif))', source_content, re.S))
aW1wb3J0IHJlCnNvdXJjZV9jb250ZW50ID0gJ1xuJy5qb2luKFsKICAgICcjaWZkZWYgVFlQRVpFUk8nLAogICAgJyAgaW50IHNvbWVpbnQgPSA0MjsnLAogICAgJyNlbmRpZicsCiAgICAndm9pZCBhYmMgKCBpbnQgdmFsdWUpIHsnLAogICAgJyAgcmV0dXJuIDUgKiogMi41JywKICAgICd9JywKICAgICcnLAogICAgJ2FiYycsCiAgICAnI2lmZGVmIFRZUEVBJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDwtLS0tIGJlZ2luIGlkZW50aWZpZXIsIG1heSBjb250YWluIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZXMKICAgICcjaW5jbHVkZSAic29tZV9oZWFkZXIuaCInLCAgICAgICAgICAgICAgICAgICAgICMgPC0tLS0gSSB3YW50IHRoZXNlIGxpbmVzCiAgICAnICAgICAgICAgICAjaW5jbHVkZSAic29tZV9vdGhlcl9oZWFkZXIyMy5oIicsICAjIDwtLS0tIEkgd2FudCB0aGVzZSBsaW5lcwogICAgJyAgICAgICAgICAgI2Vsc2UgICAgICAgICcsICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCBzdG9wIGlkZW50aWZpZXIsIG1heSBjb250YWluIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZXMKICAgICdkb3VibGUgaW5fZmFjdF9pbnQgPSA1OycsICAgICAgICAgICAgICAgICAgICAgICMgc29tZSBpcnJlbGV2YW50IGNvbnRlbnQKICAgICcgICAgICAgICAjZW5kaWYgICAgJywgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmluYWwgc3RvcCBpZGVudGlmaWVyLCBtYXkgY29udGFpbiBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2VzCiAgICAnJywKICAgICdhID0gNScsCiAgICAnI2lmZGVmIFRZUEVCJywKICAgICcgIGFiYyA9IDIzLjU7JywKICAgICcjZW5kaWYnLApdKQoKcHJpbnQocmUuZmluZGFsbChyJyNpZmRlZlxzK1RZUEVBXHMqKC4qPykoPz1ccyojKD86ZWxzZXxlbmRpZikpJywgc291cmNlX2NvbnRlbnQsIHJlLlMpKQ==