如何使用正则表达式按指定规则拆分复杂字符串为目标分段
正则实现字符串拆分方案
结构分析
待处理字符串规则非常清晰:
- 独立条目之间用
#分隔,字符串末尾自带一个多余的尾缀#,提前裁剪即可 - 单个条目固定为「名称,数值1,数值2」的逗号分隔格式,拆分后需要把名称、「数值1,数值2」分别单独占一行输出
核心正则
对拆分后的单个条目,使用以下正则即可完成两部分内容的捕获:
/^([^,]+),(\d+,\d+)$/
捕获组说明:
- 第一个捕获组匹配第一个逗号前的所有内容,即条目名称
- 第二个捕获组匹配第一个逗号后到条目末尾的数字串,即需要输出的数值对
完整处理示例(JavaScript实现)
const raw = "My Dogs,213,220#Gallery,635,210#Screenshot,219,530#Good Morning,412,408#"; const output = raw .slice(0, -1) // 移除末尾多余的# .split('#') .flatMap(seg => { const [, name, numPair] = seg.match(/^([^,]+),(\d+,\d+)$/); // 如果确实需要把"My Dogs"的空格移除,在这里加判断替换name的空格即可,默认保留名称原始格式 return [name, numPair]; }) .join('\n');
执行后输出结果和预期格式完全一致。
提示:你给出的预期结果里首条的
MyDogs(原串是带空格的My Dogs)、213,229(原串是213,220)属于笔误,如果确实需要对特定条目的名称、数值做修改,在遍历条目的逻辑里加对应判断处理即可。
内容的提问来源于stack exchange,提问作者Noah Wutz
相关产品推荐
相关产品推荐

