我在从 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”。
感谢您的帮助!