加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:26:16 所属栏目:百科 来源:网络整理
导读:我正在尝试一些我认为很容易的事情.我正在寻找一个单一的正则表达式解决方案(尽管其他人欢迎完整性).我想拆分n次出现的分隔符. 这是一些数据: x - "I like_to see_how_too"pat - "_" 期望的结果 假设我想在第一次出现_时拆分: [1] "I like" "to see_how_to
我正在尝试一些我认为很容易的事情.我正在寻找一个单一的正则表达式解决方案(尽管其他人欢迎完整性).我想拆分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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读