strsplit一审

Fra*_*art 19 regex r strsplit

我想编写一个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)


Hen*_*rik 9

需要速度?然后去寻找stringi功能.请参阅此处的时间安排.

library(stringi)
x <- "12)34)56"
stri_split_fixed(str = x, pattern = ")", n = 2)
Run Code Online (Sandbox Code Playgroud)


nru*_*ell 6

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)


the*_*ail 6

识别字符的位置然后在其中任何一侧子字符串可能更安全:

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)