You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中提取字符串开头的完整姓名(含带点缩写)

解决方案

针对你的需求,有几种简单高效的方法可以提取完整姓名:

方法1:使用sub函数(推荐,适合格式固定的场景)

利用文件名中固定存在CELF-4这一特征,直接移除该字符串及之后的所有内容,保留前面的姓名部分:

df <- c("Alilis CELF-4_CF_Data_Entry.xlsx" , "Ana T. CELF-4_CF_Data_Entry.xlsx" , "Ana V. CELF-4_CF_Data_Entry.xlsx","Anita CELF-4_CF_Data_Entry.xlsx")

# 提取姓名并去重
full_names <- sub(" CELF-4.*", "", df)
unique(full_names)

运行结果:

[1] "Alilis"  "Ana T."  "Ana V."  "Anita"

原理:正则表达式" CELF-4.*"匹配以空格开头的CELF-4及其后的所有字符,sub函数将匹配到的内容替换为空字符串,从而得到完整姓名。

方法2:使用stringr包的str_extract函数

如果需要更灵活的正则匹配,可以用str_extract提取开头到CELF-4之前的内容:

library(stringr)

full_names <- str_extract(df, "^.*?(?= CELF-4)")
unique(full_names)

运行结果和方法1一致。

原理:正则表达式^.*?(?= CELF-4)是正向预查,^匹配字符串开头,.*?以非贪婪模式匹配任意字符,直到遇到 CELF-4(不包含该部分),精准提取姓名区域。

内容的提问来源于stack exchange,提问作者amisos55

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:50:27