I think it should work in all the above cases as it is the equivalent of
s/^.*?\s(.*)$/$1/ but it will fail on multiple firstnames or titles.
Dr. John Smith
A N Other
You normally want to store :- Title, Firstname, Surname, Other Names/Initials and any other data. I have even used a seperator in the name like : if I can not change the database structure for some reason.
Hope this helps
UnderMine