正则表达式 – 在第一个/第n个分隔符出现时拆分

前端之家收集整理的这篇文章主要介绍了正则表达式 – 在第一个/第n个分隔符出现时拆分前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试一些我认为很容易的事情.我正在寻找一个单一的正则表达式解决方案(尽管其他人欢迎完整性).我想拆分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}.
library(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"
原文链接:https://www.f2er.com/regex/356975.html

猜你在找的正则表达式相关文章