首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么字符串在上次开括号后不分裂?

为什么字符串在上次开括号后不分裂?
EN

Stack Overflow用户
提问于 2018-12-13 17:46:38
回答 1查看 55关注 0票数 1

我试图将字符串拆分为左("(")括号的最后一次出现),但出于某种原因,R和stringr::str_split没有认识到这一点。

理想情况下,我希望字符串拆分(PP)

有什么想法吗?

代码语言:javascript
复制
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)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-13 17:51:37

你可以用

代码语言:javascript
复制
"\\((?=[^(]*$)"

模式是\((?=[^(]*$)

  • \( -a (
  • (?=[^(]*$) --在当前位置的右侧,除了(之外,还需要0或更多的字符,直到字符串的末尾。

R检验:

代码语言:javascript
复制
> 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或更多的空格):

代码语言:javascript
复制
"\\s*\\((?=[^(]*$)"
 ^^^^

在线

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53767464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档