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

如何使用正则表达式拆分字符串生成指定结构的对象数组

需求说明

需要将给定格式的字符串转换为指定结构的对象数组,现有输入字符串如下:

const str = "addias (brand|type) sneakers(product) for men(o)"

期望输出结构:

let output = [
 { 
  key:"addias",
  value:["brand","type"]
 },
{ 
  key:"sneakers",
  value:["product"]
 },
{ 
  key:"for men",
  value:[]
 }
]

原有实现的问题:
按空格拆分字符串的逻辑,在key包含空格(例如for men)的场景下会解析错误,无法正确提取带空格的key。

实现方案

用全局正则匹配每个「key(值列表)」单元即可解决,完整实现代码如下:

function generateSchema(val) {
  // 正则匹配规则:[捕获组1:所有非括号字符] + ( + [捕获组2:所有非右括号字符] + )
  const matchRule = /([^()]+)\(([^)]*)\)/g
  const result = []
  let currentMatch

  while ((currentMatch = matchRule.exec(val)) !== null) {
    // 提取key,去除首尾多余空格
    const key = currentMatch[1].trim()
    // 提取括号内的原始值
    const rawValue = currentMatch[2].trim()
    const value = rawValue && rawValue !== 'o' ? rawValue.split('|') : []
    result.push({ key, value })
  }
  return result
}

// 测试
const str = "addias (brand|type) sneakers(product) for men(o)"
console.log(generateSchema(str))

逻辑说明

  • 正则/([^()]+)\(([^)]*)\)/g会全局匹配所有符合规则的键值单元,带空格的key会被完整捕获到第一组
  • 括号内的内容如果是标记o或者为空,直接返回空数组,否则按|拆分得到值列表
  • 自动去除key的首尾多余空格,兼容key和括号之间有空格、没有空格的两种格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:04