r-如何从给定字符/文本的两侧同时删除文本/字符(#regex)

  • 本文关键字:字符 文本 删除 #regex r regex stringr
  • 更新时间 :
  • 英文 :


r中删除给定字符/文本左侧和右侧的文本的最简单方法是什么?

我有以下数据集的示例:a = c("C:\final docs with data/Gakenke_New_Sanitation.xlsx", "C:\final docs with data/Gatsibo_New_Sanitation.xlsx", "C:\final docs with data/Rutsiro_New_Sanitation.xlsx")

我的预期产量将保持在:Gakenke、GatsiboRutsiro

我知道,我可以分解这个任务,并使用mutate()如下处理:

a %>% mutate(a = str_remove(a, "C.+/"), a = str_remove(a,"_.+"))

我现在的问题是,我可以将哪种简单的pattern传递给突变功能,以保持我的预期结果:Gakenke、GatsiboRutsiro

非常感谢您的帮助。非常感谢。

您可以使用

a = c("C:\final docs with data/Gakenke_New_Sanitation.xlsx", "C:\final docs with data/Gatsibo_New_Sanitation.xlsx",  "C:\final docs with data/Rutsiro_New_Sanitation.xlsx")
library(stringr)
str_remove_all(a, "^.*/|_.*")
## => [1] "Gakenke" "Gatsibo" "Rutsiro"

stringr::str_remove_all删除所找到的模式的所有出现。^.*/|_.*匹配从开始到最后一个/的字符串,然后从_到字符串结束的字符串(注意,假设该字符串没有换行字符(。

一种可能的解决方案,基于stringr::str_extract和环视:

library(tidyverse)
a %>% 
str_extract("(?<=data\/).*(?=\_New)")
#> [1] "Gakenke" "Gatsibo" "Rutsiro"

相关内容

  • 没有找到相关文章

最新更新