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

如何在Ruby中使用regex匹配含特殊字符的任意层级重复模式

Ruby 多场景变量匹配正则解决方案

你原有正则的局限为强制要求必须存在1个点且仅支持两段式点分隔结构,无法适配无点和任意多点的场景,修改后的实现代码如下:

arr = value.scan(/\{\{(\w+(?:\.\w+)*)\}\}/).flatten

兼容场景验证

上述正则可同时覆盖你提到的所有需求:

  • 无点分隔场景:匹配{{width}},提取结果为width
  • 任意层级点分隔场景:匹配{{shape.rectangle.coords.width}},提取结果为完整的shape.rectangle.coords.width
  • 原有两段式场景:依然兼容{{coords.width}}的匹配,提取结果无变化

正则逻辑说明

  • \{\{ / \}\}:匹配前后的双大括号边界
  • \w+:匹配开头的变量名片段,符合常见的变量命名规则(支持字母、数字、下划线)
  • (?:\.\w+)*:非捕获分组,* 代表可匹配0次或多次:
    • 匹配0次时,对应无点分隔的单变量场景
    • 匹配N次时,对应N个点分隔的多层变量场景
  • 外层的()是捕获分组,scan方法会自动提取该分组的内容作为结果

如果你的场景中可能存在双大括号和变量之间的空格(比如{{ coords.width }}),可以使用兼容空格的版本:

arr = value.scan(/\{\{\s*(\w+(?:\.\w+)*)\s*\}\}/).flatten

内容的提问来源于stack exchange,提问作者Divyansh Mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:09:02