我想编写一个 strsplit 命令来获取第一个“)”并拆分字符串。
例如:
f("12)34)56")
"12" "34)56"
我已经阅读了其他几个相关的正则表达式 SO 问题,但恐怕我无法对此做出正面或反面。感谢您的任何帮助。
strsplit
如果您曾经regexpr
获得第一个匹配项,那么您可以获得相同的列表类型结果,然后是regmatches
.
x <- "12)34)56"
regmatches(x, regexpr(")", x), invert = TRUE)
# [[1]]
# [1] "12" "34)56"
需要速度吗?然后去stringi
功能。请参阅此处的时间安排。
library(stringi)
x <- "12)34)56"
stri_split_fixed(str = x, pattern = ")", n = 2)
识别字符的位置然后在它的任一侧子串可能会更安全:
x <- "12)34)56"
spl <- regexpr(")",x)
substring(x,c(1,spl+1),c(spl-1,nchar(x)))
#[1] "12" "34)56"
另一种选择是str_split
在包中使用stringr
:
library(stringr)
f <- function(string)
{
unlist(str_split(string,"\\)",n=2))
}
> f("12)34)56")
[1] "12" "34)56"
将第一个替换(
为非打印字符"\01"
,然后对其进行 strsplit。"\01"
只要不出现,您可以使用任何您喜欢的角色代替。
strsplit(sub(")", "\01", "12)34)56"), "\01")