My previous code assumed a word was preceded by a space, but I stuck in a check for NOT opening guillemet. Also, using DiapDealer's unicode codepoints.
Find:
Code:
(?<![.!?«])(?<=[ ])(\p{Lu})(?=\p{Ll}+)
Replace:
Finds a space, capital letter, lowercase letter, assuming it is not proceeded by punctuation types:
.!?«
Does that work? If not, I'll try to come up with something more inspired in the morning.