r - R中的stringr:当filename和filename.extension共享公共字符时从filename.extension中提取文件名
问题描述
我有一组'filename.extension',我只想提取文件名。当文件名与文件扩展名共享一个字符时,我无法提取完整的文件名。例如,filename.extension“qrs.sas7bdat”有
filename="qrs"
extension="sas7bdat"
在这种情况下,可以观察到文件名与扩展名共享字符“s”。
下面是一些 R 代码,以提供更多上下文:
files_sas <- c("abc.sas7bdat","qrs.sas7bdat")
stringr::str_extract(files_sas,"(?:.*|.*s)[^\\.sas7bdat]")
这组代码返回以下字符向量:
"abc" "qr"
这不是我想要的——我想要的结果如下:
c("abc","qrs")
看起来我很接近了,所以我希望有人能帮助我得到我想要的结果。
非常感谢。
解决方案
我们可以使用sub
来匹配.
(.
是匹配任意字符的元字符,所以我们转义 ( \\
) iit ,后跟其他字符 ( .*
),在替换中,我们可以指定空白 ( ""
)
sub("\\..*", "", files_sas)
#[1] "abc" "qrs"
或与stringr
library(stringr)
str_remove(files_sas, "\\..*")
或与file_path_sans_ext
tools::file_path_sans_ext(files_sas)
#[1] "abc" "qrs"
推荐阅读
- python - Telegram bot python 向用户发送多条消息
- json - 序列化/反序列化 js-joda LocalDate 的首选方式?
- apache-spark - Spark SQL 无法识别 \d+
- java - Android中的TextView在'/'字符后不显示任何文本
- django - vagrant + ansible 中的域问题,尝试使用 example.com 并获取 example.local
- python - sklearn中的ValueError:形状未对齐
- c - 在windows下使用c将数据传递给线程的问题
- python - 在python中计算列表中的字符串,然后过滤和匹配
- azure - 如何在 Azure Blob Storage .dotnet core 中存储 2 个同名的 pdf 文件
- ibm-doors - 如何将一行从一个属性复制到 DOOR 中的另一个属性