You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则提取含嵌套括号的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:42:06