上下文
我有一个字符向量a
。
我希望使用/
函数提取上一个斜杠( .nc
)和.nc
之间的文本。
我试过这样做:str_extract(a, "(?=/).*(?=.nc)")
,但失败了。
问题
如何在字符向量a
中得到最后一次鞭打和.nc
之间的文本。
可复制代码
a = c(
'data/temp/air/pm2.5/pm2.5_year_2014.nc',
'data/temp/air/pm10/pm10_year_2014.nc',
'efcv/asdfe/weewr/rtrkhh/ss_fef_10233_dfdfe.nc'
)
# My solution (failed)
str_extract(a, "(?=/).*(?=.nc)")
# [1] "/temp/air/pm2.5/pm2.5_year_2014"
# [2] "/temp/air/pm10/pm10_year_2014"
# [3] "/asdfe/weewr/rtrkhh/ss_fef_10233_dfdfe"
# The expected output should like this:
# [1] "pm2.5_year_2014"
# [2] "pm10_year_2014"
# [3] "ss_fef_10233_dfdfe"
发布于 2022-09-27 04:00:05
下面是regex替换方法:
a = c(
'data/temp/air/pm2.5/pm2.5_year_2014.nc',
'data/temp/air/pm10/pm10_year_2014.nc',
'efcv/asdfe/weewr/rtrkhh/ss_fef_10233_dfdfe.nc'
)
output <- gsub(".*/|\\.[^.]+$", "", a)
output
[1] "pm2.5_year_2014" "pm10_year_2014" "ss_fef_10233_dfdfe"
下面是regex逻辑:
.*/
匹配从字符串开始到最后一个/|
OR\.[^.]+$
的所有内容,从最后一个点到字符串的末尾,所有内容都匹配。
然后,我们将这些匹配替换为空字符串以删除它们,留下文件名。
https://stackoverflow.com/questions/73862168
复制相似问题