从文件名中提取字符串子集的问题

问题描述 投票:0回答:0

我在从 R 中的字符串中提取模式时遇到问题

我有一个包含路径的文件名列表,我需要从路径中提取一小部分名称以分配给另一个向量。我无法获得正确的模式定义来提取所需的部分。

这里是一些文件名的例子。我有一个 500+ 的列表,因此子函数需要是通用的。

files = c("G:\\Conservation\\Monitoring\\Conditions physico-chimiques\\CTD\\CODES_R\\Data\\CTD_parc_marin\\2009\\odf\\CTD_2009099_BSM2AMONT_1_DN.ODF",
"G:\\Conservation\\Monitoring\\Conditions physico-chimiques\\CTD\\CODES_R\\Data\\CTD_parc_marin\\2011\\odf\\CTD_2011PSSL_42_1_DN.ODF",
"G:\\Conservation\\Monitoring\\Conditions physico-chimiques\\CTD\\CODES_R\\Data\\CTD_parc_marin\\2011\\odf\\CTD_2011PSSL_10_1_DN.ODF",
"G:\\Conservation\\Monitoring\\Conditions physico-chimiques\\CTD\\CODES_R\\Data\\CTD_parc_marin\\2022\\odf\\CTD_2022PSSL_202201017ESTMARAVAL_1_DN.odf")

我要提取的模式是这些:

pattern = c("BSM2AMONT_1_DN",
            "PSSL_42_1_DN",
            "PSSL_10_1_DN",
            "ESTMARAVAL_1_DN")

到目前为止,我有这个功能:

pattern <- sub(".*\\d{4,7}([A-Z]|\\d{9})(.*)\\.(ODF|odf)", "\\2", files)

这几乎完美地工作,除了最后一个例子,我得到“STMARAVAL_1_DN”而不是所需的“ESTMARAVAL_1_DN”。

感谢您的帮助!

r regex substring pattern-matching
© www.soinside.com 2019 - 2024. All rights reserved.