使用捕获组重新排列字符串

如果要更改字符串的顺序,可以使用 pattern 中的括号将字符串的各个部分组合在一起。这些组可以在 replacement 参数中使用连续数字进行加法。

以下示例显示如何将“surname,forename”形式的名称向量重新排序为 forename surname 形式的向量。

library(randomNames) 
set.seed(1)

strings <- randomNames(5)
strings
# [1] "Sigg, Zachary"        "Holt, Jake"           "Ortega, Sandra"       "De La Torre, Nichole"
# [5] "Perkins, Donovon"  

sub("^(.+),\\s(.+)$", "\\2 \\1", strings)
# [1] "Zachary Sigg"        "Jake Holt"           "Sandra Ortega"       "Nichole De La Torre"
# [5] "Donovon Perkins"    

如果你只需要姓氏,你可以只解决第一对括号。

sub("^(.+),\\s(.+)", "\\1", strings)
# [1] "Sigg"        "Holt"        "Ortega"      "De La Torre" "Perkins"