Вашему решению не хватает двух аспектов.
Более важно то, что вы можете вырезать из ведущих "заголовков" из имен:
select regexp_replace('DR. Mr. Mr Dr Dradha Jr Jr. Mrishnan Jr.','(Dr|Mr|Jr)(\W|\w|$|,)','',1,0,'i')
from dual
, что возвращает непредвиденный результат
dha shnan
Средство защиты состоит в том, чтобы разрешить только несловные символы (\W
) и конец строки ($
) после заголовка .
Если вы введете необязательный пробел или начальную строку (^
) перед заголовком , вы избавитесь от второй проблемы - пробелов, оставшихся после удаления заголовков
select regexp_replace('DR. Mr. Mr Dr Dradha Jr Jr. Mr, Mrishnan Jr.',
'( *|^)(Dr|Mr|Jr)(\W|$)','',1,0,'i')
from dual
Dradha Mrishnan