キャプチャ正規表現全体を括弧で囲むことにより、 delimiters を削除せずに文字列を分割しています。その意図は、1 つ以上の '[!?]' 文字で終わる文を一致させることです。
不要な空のキャプチャ グループを取得するようになったことを除いて、すべてが素晴らしいです。
>>> re.compile(r'([^!?]*[!?]+)').split('Great customer service! Very happy! Will go again')
['', 'Great customer service!', '', ' Very happy!', ' Will go again']
>>> re.compile(r'([^!?]{2,}[!?]+)').split('Great customer service! Very happy! Will go again')
['', 'Great customer service!', '', ' Very happy!', ' Will go again']
(これはすべて、より複雑な正規表現とサブ関数内に深くネストされているため、実際にはハックは必要ありません。ソリューションを正規表現にしたいので、より複雑な正規表現に折りたたむことができます)