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

正则匹配求助:提取.xlsx文件名前的目标片段(R语言示例)

解决方法

方法1:精准正则匹配

直接匹配最后一段斜杠后、.xlsx前的内容,用[^/]+匹配不含斜杠的字符序列,确保只取目标文件名部分:

library(stringr)
test <- c("truc/truc/plouf.xlsx","plouf.xlsx","truc/plouf.xlsx")
str_extract(test, "[^/]+(?=\\.xlsx)")

输出结果:

[1] "plouf" "plouf" "plouf"

为什么你的原正则失效?

原正则(?<=\\/{0,1}).+(?=\\.xlsx)的问题在于:

  • (?<=\\/{0,1})允许匹配字符串开头或单个斜杠后的位置,导致.+(无论贪婪/惰性)会从最左端开始匹配,把前面的路径truc/truc/或truc/也包含进去。
  • 惰性匹配.+?在这里没用,因为整个字符串只有一个.xlsx,无论贪婪还是惰性都会匹配到该后缀前的所有内容。

方法2:用R文件处理工具(更简洁)

如果是处理文件路径,推荐用R内置的文件操作函数,无需手写正则:

# 先提取文件名,再去掉后缀
tools::file_path_sans_ext(basename(test))

同样能得到"plouf"的结果,代码可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:53:18