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

R语言正则提取问题:获取def后首个%ile前最后括号内的内容

R字符串提取:获取def后首个%ile前最后一对括号内容

需求

从字符串中提取满足以下条件的内容:

  • 位于def之后
  • 在def后第一个%ile之前的最后一对括号内,预期结果为4

问题诊断

原代码里的正则(?<=\\()(.*?)(?=\\)\\%ile)用了非贪婪匹配.*?,会从def后的第一个左括号开始匹配,直到遇到第一个)%ile,所以得到2)(3)(4;而str_extract_all会把后续(5)%ile里的5也提取出来,都不符合需求。

解决方案

直接用更精准的正则一步到位提取目标内容:

library(stringr)
x <- "abc(0)(1)%ile, def(2)(3)(4)%ile(5)%ile"

target <- str_extract(x, "(?<=def.*\\()([^)]+)(?=\\)%ile)")
print(target)
# 输出:"4"

正则说明

  • (?<=def.*\\():正向断言,确保目标内容在def加上任意长度字符后的左括号之后,跳过前面的括号内容
  • ([^)]+):匹配左括号后所有非右括号的字符,也就是最后一对括号里的内容
  • (?=\\)%ile):正向断言,确保目标内容紧跟在右括号和%ile之前,限定到def后的第一个%ile位置

内容的提问来源于stack exchange,提问作者Ian Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22