As the document goes:
This is called a negative lookbehind assertion. Similar to positive lookbehind assertions, the contained pattern must only match
Instead of using Negative Lookbehind, you can use Negative Lookahead with balanced braces.
,(?![^{]*\})
For example:
>>> re.findall(r',..(?![^{]*\})', 'a1,a2,a3,a4,{_some_unknown_length,a5,a6,a7}') [',a2', ',a3', ',a4']