正则表达式 – 在第一个/第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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |