我们可以匹配一个或多个非空格字符( \\S+ ) 从头开始 ( ^ )后跟一个或多个空格的字符串( \\s+ ) 要么 ( | )用一个环顾四周来匹配 . 后跟字符直到字符串结尾并用空格替换( "" )
\\S+
^
\\s+
|
.
""
gsub("^\\S+\\s+|(?<=\\.).*$", "", str1, perl = TRUE) #[1] "Rev." "Miss."
或者另一种选择是将角色捕获为一组( ([^.]+\\.) )并在替换中使用反向引用( \\1 )该捕获组。
([^.]+\\.)
\\1
sub("^[^,]+,\\s+([^.]+\\.).*", "\\1", str1) #[1] "Rev." "Miss."
str1 <- c("Montvila, Rev. Juozas", "Johnston, Miss. Catherine Helen")