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

如何使用JavaScript与正则表达式提取字符串表格中的Name列

提取表格Name列的修正方案

你的代码有几个问题导致无法正常提取所有Name:

  • 正则没加全局匹配标志g,只会返回第一个匹配结果
  • 正则末尾的\s+强制要求Enabled列后面必须有空白,但像6ytec那行没有Description内容,导致匹配失败
  • 没跳过表头和分隔线两行

下面给你两种可行的解决方法:

方法1:分割行后逐行提取

这种方式更直观,不容易出错:

const stdout = 
`Name               Enabled Description
----               ------- -----------
6ytec              True
DefaultAccount     False   Some text.
John               True
WDAGUtilityAccount False   Some text
Admin              False   Some text
Guest              False   Some text`;

// 按行分割,过滤掉空行
const lines = stdout.split('\n').filter(line => line.trim() !== '');
// 跳过前两行(表头和分隔线)
const nameLines = lines.slice(2);
// 提取每行的Name:取第一个连续非空白字符的部分
const names = nameLines.map(line => line.match(/^\S+/)[0]);

console.log(names);
// 输出:["6ytec", "DefaultAccount", "John", "WDAGUtilityAccount", "Admin", "Guest"]

方法2:修正正则全局匹配

调整正则,兼容有无Description的行,同时开启全局匹配:

const stdout = 
`Name               Enabled Description
----               ------- -----------
6ytec              True
DefaultAccount     False   Some text.
John               True
WDAGUtilityAccount False   Some text
Admin              False   Some text
Guest              False   Some text`;

// 正则解释:
// ^\S+ 匹配行首的连续非空白字符(Name)
// \s+(True|False) 匹配Name后的空白和Enabled值
// (?:\s+.+)? 可选匹配后面的空白和Description内容(非捕获组)
// gm 全局+多行模式,匹配所有行
const regexp = /^\S+\s+(True|False)(?:\s+.+)?/gm;
const matches = stdout.match(regexp);
// 从每个匹配结果中提取Name部分
const names = matches.map(match => match.match(/^\S+/)[0]);

console.log(names);
// 输出同上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:10:23