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

使用正则表达式将字符串转换为数组的技术咨询

解决字符串转指定数组(提取OR合并)的方法

我来帮你拆解这个问题,核心就是把带OR的字符串按规则拆分成二维数组对吧?我给你一套清晰的步骤和代码实现,你可以直接套用,也能根据自己的需求调整。

核心思路

咱们的目标是把类似 "A OR B, C OR D, E" 这样的字符串,转换成 [["A","B"], ["C","D"], ["E"]] 这样的二维数组,核心步骤分三步:

  • 先把字符串按逗号分割成独立的分组
  • 对每个分组,再按OR分割成单个元素
  • 清理掉所有多余的空格和空元素,保证数组干净

代码实现(以JavaScript为例)

下面是一个鲁棒性较强的实现,能处理各种常见的输入情况(比如OR前后的空格、逗号前后的空格、单个元素的分组等):

function stringToORArray(input) {
  // 1. 按逗号分割成多个分组,同时去掉每个分组前后的空格
  const rawGroups = input.split(',').map(group => group.trim());
  
  // 2. 对每个分组,用正则匹配"OR"(前后允许任意空格)分割成元素,再清理每个元素的空格,过滤空值
  return rawGroups.map(group => {
    return group.split(/\s+OR\s+/).map(item => item.trim()).filter(item => !!item);
  });
}

// 测试用例
const testInput = "Cat OR Dog, Bird, Elephant OR Fox OR Giraffe";
const output = stringToORArray(testInput);
console.log(output);
// 输出结果:[["Cat", "Dog"], ["Bird"], ["Elephant", "Fox", "Giraffe"]]

关键细节说明

  • 用正则/\s+OR\s+/而不是直接"OR"分割:这样能兼容OR前后有1个或多个空格的情况,要是你的输入里OR和元素之间没有空格(比如"CatORDog"),把正则改成/OR/就行
  • 两次trim():分别处理分组前后的空格和单个元素前后的空格,避免数组里出现空字符串或带空格的元素
  • filter(item => !!item):防止输入里有多余的逗号导致出现空分组,比如输入"Apple OR Banana,, Cherry"时,会自动过滤掉空的中间分组

如果你的输入格式有特殊情况(比如用分号代替逗号,或者OR是小写的or),只需要调整分割的符号或正则即可,比如把正则改成/\s+or\s+/i就能忽略大小写匹配OR/or。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:03:45