Well, this certainly works--though it is the same as yours but using a StringExpression
instead of a RegularExperssion
:
StringReplace["AntiqueWhite and LavenderBlush",
x : CharacterRange["a", "z"] ~~ y : CharacterRange["A", "Z"] :>
x <> " " <> y]
And like yours, it does not check if the new separated words are actually words...