Это работает отлично на PCRE и не падает с помощью StackOverflow.
"(.*?[^\\])??((\\\\)+)?+"
Объяснение:
"
; .*?
{Lazy match}; завершение символом non escape [^\\]
; (.*?[^\\])??
"
), но ему может предшествовать четное число пар escape-пар (\\\\)+
; и это Greedy (!) необязательно: ((\\\\)+)?+
{Greedy matching}, строка bacause может быть пустой или без конечных пар!