我正在尝试一些我认为很容易的事情.我正在寻找一个单一的正则表达式解决方案(尽管其他人欢迎完整性).我想拆分n次出现的分隔符.
这是一些数据:
x <- "I like_to see_how_too"
pat <- "_"
Run Code Online (Sandbox Code Playgroud)
期望的结果
假设我想在第一次出现时拆分_:
[1] "I like" "to see_how_too"
Run Code Online (Sandbox Code Playgroud)
假设我想在第二次出现时拆分_:
[1] "I like_to see" "how_too"
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果解决方案是正则表达式,可以推广到第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)))
Run Code Online (Sandbox Code Playgroud)
这是使用gsubfn包和一些正则表达式的另一种解决方案.要更改nth分隔符的出现次数,您只需交换放置在范围量词内的数字 - {n}.
library(gsubfn)
x <- 'I like_to see_how_too'
strapply(x, '((?:[^_]*_){1})(.*)', c, simplify =~ sub('_$', '', x))
# [1] "I like" "to see_how_too"
Run Code Online (Sandbox Code Playgroud)
如果您希望第n个匹配项是用户定义的,则可以使用以下命令:
n <- 2
re <- paste0('((?:[^_]*_){',n,'})(.*)')
strapply(x, re, c, simplify =~ sub('_$', '', x))
# [1] "I like_to see" "how_too"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4611 次 |
| 最近记录: |