首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带后缀的圆括号之间提取文本

问在带后缀的圆括号之间提取文本
EN

Stack Overflow用户
提问于 2021-03-03 11:05:53
回答 2查看 94关注 0票数 1

下面是示例t <- 'Hui Wan (Shanghai Maritime University); Mingqiang Xu (Shanghai Chart Center, Donghai Navigation Safety Administration of MOT)*; Yingjie Xiao ( Shanghai Maritime University)',我希望输出是'()*‘中的信息,在这个示例中是Shanghai Chart Center, Donghai Navigation Safety Administration of MOT

EN

回答 2

Stack Overflow用户

发布于 2021-03-03 11:49:18

为了只匹配(…)*的内容,棘手的部分是避免匹配两个不相关的括号组(例如,类似于(…) … (…)*)。要做到这一点,最简单的方法是不允许在匹配中使用括号:

代码语言:javascript
复制
stringr::str_match_all(t, r'{\(([^)]*)\)\*}')

请注意,对于嵌套括号(( … ( … ) …)*),这将失败。正则表达式根本不适合解析嵌套内容,因此如果需要处理这种情况,正则表达式不是合适的工具;您需要使用上下文无关解析器(这要复杂得多)。

票数 2
EN

Stack Overflow用户

发布于 2021-03-03 11:49:35

定义以(开头的模式,后面跟着除(或)(表示为负字符类[^)(]+)之外的任何字符,并由)*关闭。

代码语言:javascript
复制
library(stringr)
str_extract_all(t, "\\([^)(]+\\)\\*")
[[1]]
[1] "(Shanghai Chart Center, Donghai Navigation Safety Administration of MOT)*"

您可以使用unlist()消除列表结构

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

https://stackoverflow.com/questions/66455770

复制
相关文章

相似问题

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