首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中使用str_extrac()提取特定字符

如何在R中使用str_extrac()提取特定字符
EN

Stack Overflow用户
提问于 2022-09-27 03:52:48
回答 1查看 28关注 0票数 0

上下文

我有一个字符向量a

我希望使用/函数提取上一个斜杠( .nc )和.nc之间的文本。

我试过这样做:str_extract(a, "(?=/).*(?=.nc)"),但失败了。

问题

如何在字符向量a中得到最后一次鞭打和.nc之间的文本。

可复制代码

代码语言:javascript
运行
复制
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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-27 04:00:05

下面是regex替换方法:

代码语言:javascript
运行
复制
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
  • \.[^.]+$的所有内容,从最后一个点到字符串

的末尾,所有内容都匹配。

然后,我们将这些匹配替换为空字符串以删除它们,留下文件名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73862168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档