import re
s = "3NUL<123>lkjasdf lfdl;kja (432) adsfa sd 4ETX<342> sdfasdf asfds asdfa4(1 234) \n\n4ETX<345> asdfasdf\n\nNULSOH<342> sadfasd fasasdf asd 4ETX<345> asdfasdf "
#non-overlapping
p = re.compile(r'(CAN|NUL|E(?:TX|NQ|SC)|S(?:OH|UB))(?:(?!\1).)*', re.DOTALL)
print([x.group(0) for x in p.finditer(s)])
#overlapping
p = re.compile(r'(?=((CAN|NUL|E(?:TX|NQ|SC)|S(?:OH|UB))(?:(?!\2).)*))', re.DOTALL)
print([x.group(1) for x in p.finditer(s)])
aW1wb3J0IHJlCgpzID0gIjNOVUw8MTIzPmxramFzZGYgbGZkbDtramEgICg0MzIpIGFkc2ZhIHNkIDRFVFg8MzQyPiBzZGZhc2RmIGFzZmRzICBhc2RmYTQoMSAyMzQpICBcblxuNEVUWDwzNDU+IGFzZGZhc2RmXG5cbk5VTFNPSDwzNDI+IHNhZGZhc2QgZmFzYXNkZiBhc2QgNEVUWDwzNDU+IGFzZGZhc2RmICIKCiNub24tb3ZlcmxhcHBpbmcKcCA9IHJlLmNvbXBpbGUocicoQ0FOfE5VTHxFKD86VFh8TlF8U0MpfFMoPzpPSHxVQikpKD86KD8hXDEpLikqJywgcmUuRE9UQUxMKQpwcmludChbeC5ncm91cCgwKSBmb3IgeCBpbiBwLmZpbmRpdGVyKHMpXSkKCiNvdmVybGFwcGluZwpwID0gcmUuY29tcGlsZShyJyg/PSgoQ0FOfE5VTHxFKD86VFh8TlF8U0MpfFMoPzpPSHxVQikpKD86KD8hXDIpLikqKSknLCByZS5ET1RBTEwpCnByaW50KFt4Lmdyb3VwKDEpIGZvciB4IGluIHAuZmluZGl0ZXIocyldKQ==
['NUL<123>lkjasdf lfdl;kja (432) adsfa sd 4ETX<342> sdfasdf asfds asdfa4(1 234) \n\n4ETX<345> asdfasdf\n\n', 'NULSOH<342> sadfasd fasasdf asd 4ETX<345> asdfasdf ']
['NUL<123>lkjasdf lfdl;kja (432) adsfa sd 4ETX<342> sdfasdf asfds asdfa4(1 234) \n\n4ETX<345> asdfasdf\n\n', 'ETX<342> sdfasdf asfds asdfa4(1 234) \n\n4', 'ETX<345> asdfasdf\n\nNULSOH<342> sadfasd fasasdf asd 4', 'NULSOH<342> sadfasd fasasdf asd 4ETX<345> asdfasdf ', 'SOH<342> sadfasd fasasdf asd 4ETX<345> asdfasdf ', 'ETX<345> asdfasdf ']