我想编写一个strsplit命令来抓取第一个")"并拆分字符串.
例如:
f("12)34)56")
"12" "34)56"
Run Code Online (Sandbox Code Playgroud)
我已经阅读了其他几个相关的正则表达式问题,但我担心我无法做出这样的正面或反面.谢谢你的任何帮助.
Ric*_*ven 16
你可以获得与strsplit
你曾经regexpr
获得第一场比赛时相同的列表类型结果,然后获得相反的结果regmatches
.
x <- "12)34)56"
regmatches(x, regexpr(")", x), invert = TRUE)
# [[1]]
# [1] "12" "34)56"
Run Code Online (Sandbox Code Playgroud)
需要速度?然后去寻找stringi
功能.请参阅此处的时间安排.
library(stringi)
x <- "12)34)56"
stri_split_fixed(str = x, pattern = ")", n = 2)
Run Code Online (Sandbox Code Playgroud)
str_split
另一种选择是在包中使用stringr
:
library(stringr)
f <- function(string)
{
unlist(str_split(string,"\\)",n=2))
}
> f("12)34)56")
[1] "12" "34)56"
Run Code Online (Sandbox Code Playgroud)
识别字符的位置然后在其中任何一侧子字符串可能更安全:
x <- "12)34)56"
spl <- regexpr(")",x)
substring(x,c(1,spl+1),c(spl-1,nchar(x)))
#[1] "12" "34)56"
Run Code Online (Sandbox Code Playgroud)