我正在尝试向 R 中的数据集添加一列。该列应该是名称列的首字母。我正在尝试使用lapply
并传入一个函数来获取首字母 - 但是,我无法让这个正则表达式工作。
pattern <- "(\b[a-zA-Z])"
str<-"MICHAEL, JENSON F"
m <- regexpr(pattern,str,perl=TRUE)
regmatches(str,m)
返回字符(0)
如何让 R 返回字符串的匹配列表?我希望正则匹配返回 MJ 和 F。
有两个问题:\b
必须转义,你应该使用gregexpr
而不是regexpr
因为后者只返回第一个匹配。
pattern <- "(\\b[a-zA-Z])"
str<-"MICHAEL, JENSON F"
m <- gregexpr(pattern,str,perl=TRUE)
regmatches(str,m)[[1]]
# [1] "M" "J" "F"
刚刚弄清楚了stringr库。
str_match_all(str, "(\\b[a-zA-Z])[a-zA-Z]* ?")