我正在尝试一些我认为很容易的事情.我正在寻找一个单一的正则表达式解决方案(尽管其他人欢迎完整性).我想拆分n次出现的分隔符.
这是一些数据:
x <- "I like_to see_how_too" pat <- "_"
期望的结果
假设我想在第一次出现_时拆分:
[1] "I like" "to see_how_too"
假设我想在第二次出现_时拆分:
[1] "I like_to see" "how_too"
理想情况下,如果解决方案是正则表达式,则可以推广到第n次;该解决方案将使用strsplit与单个正则表达式.
这是一个不适合我使用strsplit的单正则表达式参数的解决方案
x <- "I like_to see_how_too" y <- "_" n <- 1 loc <- gregexpr("_",x)[[1]][n] c(substr(x,1,loc-1),substr(x,loc + 1,nchar(x)))
这是另一个使用gsubfn包和一些正则表达式的解决方案.要更改分隔符的第n个匹配项,您可以简单地交换放置在量词范围内的数字 – {n}.
原文链接:https://www.f2er.com/regex/356975.htmllibrary(gsubfn) x <- 'I like_to see_how_too' strapply(x,'((?:[^_]*_){1})(.*)',c,simplify =~ sub('_$','',x)) # [1] "I like" "to see_how_too"
如果您希望第n个匹配项是用户定义的,则可以使用以下命令:
n <- 2 re <- paste0('((?:[^_]*_){',n,'})(.*)') strapply(x,re,x)) # [1] "I like_to see" "how_too"