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

正则表达式提取问题:如何将{{number}}-{{$index}}拆分为目标数组

解决字符串提取为数组的正则问题

你的问题很典型——用正则提取成对的{{...}}子串时没拿到预期的数组结果,主要是因为正则的匹配模式和全局匹配规则没设置对。

问题分析

你写的正则({{).*?(}})存在两个关键问题:

  1. 没有启用全局匹配:默认情况下正则只会匹配第一个符合条件的子串,不会遍历整个字符串找所有匹配项;
  2. 多余的分组:这个正则会把{{和}}单独作为分组返回,导致结果数组里混入不必要的拆分内容,而非完整的{{xxx}}子串。

正确解决方案

我们需要调整正则,直接匹配所有{{开头、}}结尾的完整子串,同时用非贪婪匹配避免跨子串合并。

JavaScript 示例

const inputStr = "{{number}}-{{$index}}";
// 全局匹配所有{{...}}格式的子串,非贪婪模式确保不跨匹配
const resultArray = inputStr.match(/{{.*?}}/g);
console.log(resultArray); // 输出: ["{{number}}", "{{$index}}"]

Python 示例

import re
input_str = "{{number}}-{{$index}}"
# 使用findall全局查找所有符合规则的子串
result_array = re.findall(r'{{.*?}}', input_str)
print(result_array) # 输出: ['{{number}}', '{{$index}}']

补充说明

如果你的场景中{{和}}之间可能包含换行符,可以添加单行模式适配:

  • JavaScript:/{{.*?}}/gs(s修饰符让.匹配换行)
  • Python:re.findall(r'{{.*?}}', input_str, re.DOTALL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:26:54