如何用正则提取含嵌套括号的something()完整匹配片段
提取带嵌套括号的
something()片段的正则方案 完整代码实现
library(stringr) x <- "something('pineapple', 'orange', y = c('peach', 'banana'), z = 'lemon'), something(v = c('apple', 'pear'), z = c('cherry', 'strawberry', 'grape'))" # 填充后的正则表达式 pattern <- "something\\((?:[^()]|(?R))*\\)" # 提取所有匹配片段 result <- str_extract_all(x, pattern)[[1]] print(result)
正则表达式解析
something\\(:精准匹配起始的something(,括号作为正则元字符需用双反斜杠转义(?:[^()]|(?R))*:核心的平衡括号匹配逻辑,非捕获组内包含两种可重复任意次数的匹配规则:[^()]:匹配除左右括号外的任意字符(?R):递归匹配整个正则表达式,以此处理内部嵌套的括号结构(比如c(...)这类子括号)
\\):匹配与起始括号对应的闭合右括号,同样需要转义
运行代码后,会得到两个完整的目标片段:
[1] "something('pineapple', 'orange', y = c('peach', 'banana'), z = 'lemon')" [2] "something(v = c('apple', 'pear'), z = c('cherry', 'strawberry', 'grape'))"
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

