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

Ruby中如何从数组提取指定格式数据并转换生成新数组

Ruby 提取数组字符串中方括号内内容的实现方案

需求说明

  • 原始数组:
a = ["8619 [EC006]", "9876 [ED009]", "1034 [AX009]"]
  • 目标输出:
["EC006", "ED009", "AX009"]

常用实现方法

1. 最简正则写法(推荐)

利用Ruby字符串支持正则作为索引的特性,配合map遍历数组直接提取捕获组内容:

# 严格匹配括号内大写字母+数字的格式
result = a.map { |str| str[/\[([A-Z0-9]+)\]/, 1] }

# 通用匹配规则,适配括号内任意字符
result = a.map { |str| str[/\[(.*?)\]/, 1] }

2. 显式匹配写法

适合需要清晰展示匹配逻辑的场景,用match方法执行正则后取捕获组结果:

result = a.map do |str|
  match_res = str.match(/\[(.+?)\]/)
  match_res[1]
end

3. 带容错的安全写法

如果数组中可能存在不符合xxx [xxx]格式的异常字符串,用filter_map自动跳过匹配失败的项,避免抛出NoMethodError:

result = a.filter_map { |str| str[/\[(.*?)\]/, 1] }

以上几种写法执行后,result变量都会得到符合要求的目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:51:27