求正则表达式:解析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
相关产品推荐
相关产品推荐

