regex.escape <- function(string) {
gsub("([][{}()+*^${|\\\\?.])", "\\\\\\1", string)
}
sort.by.length.desc <- function (v) v[order( -nchar(v)) ]
name <- c('Mrs. Emily S', 'Dr. Richard L', 'Dr. Drake D', 'Mr. Mrdrmsmrs', 'Test Name')
prefix <- c('Dr.', 'Mr.', 'Ms.', 'Mrs.', 'Capt.')
prefix <- sort.by.length.desc(prefix)
res <- trimws(gsub(paste0("^(?:",paste(regex.escape(prefix), collapse="|"), ")"), '', name, perl="TRUE"))
res
cmVnZXguZXNjYXBlIDwtIGZ1bmN0aW9uKHN0cmluZykgewogIGdzdWIoIihbXVt7fSgpKypeJHt8XFxcXD8uXSkiLCAiXFxcXFxcMSIsIHN0cmluZykKfQpzb3J0LmJ5Lmxlbmd0aC5kZXNjIDwtIGZ1bmN0aW9uICh2KSB2W29yZGVyKCAtbmNoYXIodikpIF0gCgpuYW1lIDwtIGMoJ01ycy4gRW1pbHkgUycsICdEci4gUmljaGFyZCBMJywgJ0RyLiBEcmFrZSBEJywgJ01yLiBNcmRybXNtcnMnLCAnVGVzdCBOYW1lJykKcHJlZml4IDwtIGMoJ0RyLicsICdNci4nLCAnTXMuJywgJ01ycy4nLCAnQ2FwdC4nKQpwcmVmaXggPC0gc29ydC5ieS5sZW5ndGguZGVzYyhwcmVmaXgpCnJlcyA8LSB0cmltd3MoZ3N1YihwYXN0ZTAoIl4oPzoiLHBhc3RlKHJlZ2V4LmVzY2FwZShwcmVmaXgpLCBjb2xsYXBzZT0ifCIpLCAiKSIpLCAnJywgbmFtZSwgcGVybD0iVFJVRSIpKQpyZXM=