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

如何用正则表达式提取括号内不含括号的内容

提取括号内不含括号的内容(Ruby正则方案)

嘿,我懂你的问题啦——你现在用的正则把括号也一起匹配出来了,咱们调整下就能拿到纯括号里的内容~

在Ruby里有两种常用的方法可以实现:

方法1:使用捕获组

你可以把括号内的部分用捕获组包起来,然后指定提取捕获组的内容:

value = "John sinu.s(14)"
result = value[/\((.*?)\)/, 1]
# 结果是 "14"

解释下这个正则:

  • \( 匹配左括号(转义是因为括号在正则里是特殊字符)
  • (.*?) 是捕获组,非贪婪匹配括号内的所有内容(非贪婪避免匹配到多个括号的情况)
  • \) 匹配右括号
  • 第二个参数1告诉Ruby,返回第一个捕获组的内容,也就是括号里的部分

方法2:使用正向断言(零宽匹配)

如果你不想用捕获组,也可以用正向预查和反向预查来精准定位括号之间的内容:

value = "John sinu.s(14)"
result = value[/(?<=\().*?(?=\))/]
# 结果也是 "14"

这里的断言是零宽的,不会被计入匹配结果:

  • (?<=\() 是反向正向断言,确保当前位置的前面是左括号
  • (?=\)) 是正向断言,确保当前位置的后面是右括号
  • .*? 就只匹配括号之间的内容啦

额外小技巧:匹配多个括号内容

如果你的字符串里有多个括号,比如 value = "Alice(25) Bob(30)",想要提取所有括号内的内容,可以用scan方法:

values = value.scan(/(?<=\().*?(?=\))/)
# 结果是 ["25", "30"]

内容的提问来源于stack exchange,提问作者ruby.r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:37:18