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

求正则表达式:解析AtlasDim.txt内容生成数组适配X3DOM开发

解决AtlasDim.txt字符串解析问题

没问题,针对你需要解析(148, (13, 13))这类格式的字符串并生成目标数组的需求,有两种实用的正则方案,咱们来逐一说明:

方案一:通用数字提取法

这种方法不纠结括号的嵌套结构,直接提取字符串里所有的数字,适合输入格式有小变动(比如空格数量不同)的场景:

// 假设已从AtlasDim.txt读取到目标字符串
const atlasContent = "(148, (13, 13))";

// 全局匹配所有连续数字序列
const numberMatches = atlasContent.match(/\d+/g);

// 转换为数字数组
const arr = numberMatches.map(numStr => Number(numStr));

// 验证结果
console.log(arr[0]); // 输出 148
console.log(arr[1]); // 输出 13
console.log(arr[2]); // 输出 13

正则/\d+/g的含义:

  • \d+:匹配1个或多个连续的数字
  • g:全局模式,会匹配字符串里所有符合条件的数字序列

方案二:精准格式匹配法

如果你能确保AtlasDim.txt的格式完全固定(就是(数字, (数字, 数字))这种结构),可以用带捕获分组的正则,直接定位每个目标数字:

const atlasContent = "(148, (13, 13))";

// 精准匹配目标格式的正则,三个捕获分组对应三个数字
const preciseRegex = /^\((\d+), \((\d+), (\d+)\)\)$/;
const matchResult = atlasContent.match(preciseRegex);

if (matchResult) {
  // 从捕获分组中提取数字并转成数组
  const arr = [
    Number(matchResult[1]),
    Number(matchResult[2]),
    Number(matchResult[3])
  ];
  
  console.log(arr); // 输出 [148, 13, 13]
}

这个正则的每个括号里的(\d+)就是一个捕获分组,分别对应你需要的三个数字,匹配成功后可以直接从matchResult里取出对应位置的内容。

两种方案都能满足你的需求,你可以根据实际的输入格式稳定性来选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:02:12