我试图将字符串拆分为左("(")括号的最后一次出现),但出于某种原因,R和stringr::str_split没有认识到这一点。
理想情况下,我希望字符串拆分(PP)。
有什么想法吗?
library(stringr)
## Doesn't Work
str_split("Ben Meyers (1), Hank Crone (1) (PP)", "\\([^\\(]*$", simplify = TRUE)
#> [,1] [,2]
#> [1,] "Ben Meyers (1), Hank Crone (1) " ""
## Works
str_split("Ben Meyers (1), Hank Crone (1) (PP)", "\\(", simplify = TRUE)
#> [,1] [,2] [,3] [,4]
#> [1,] "Ben Meyers " "1), Hank Crone " "1) " "PP)"由reprex封装创建于2018-12-13 (v0.2.0)。
发布于 2018-12-13 17:51:37
你可以用
"\\((?=[^(]*$)"模式是\((?=[^(]*$)
\( -a ((?=[^(]*$) --在当前位置的右侧,除了(之外,还需要0或更多的字符,直到字符串的末尾。R检验:
> library(stringr)
> str_split("Ben Meyers (1), Hank Crone (1) (PP)", "\\((?=[^(]*$)", simplify = TRUE)
[,1] [,2]
[1,] "Ben Meyers (1), Hank Crone (1) " "PP)"如果您想在最后一个开括号之前从元素中“修剪”空格,您可以在开头添加\s* (以匹配0或更多的空格):
"\\s*\\((?=[^(]*$)"
^^^^见在线。
https://stackoverflow.com/questions/53767464
复制相似问题