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

如何从文本中提取{{}}包裹的特定字符串并将其存入数组?

提取{{}}包裹内容的实现方案

核心思路

通过正则表达式全局匹配所有被{{}}包裹的内容,使用非贪婪匹配规则避免多个占位符连用时匹配范围出错,直接提取捕获组的内容存入数组即可。

常见语言实现示例

JavaScript

const inputText = "Hello {{name}}, I am {{virtual_assistant_name}}, virtual assistant of {{company_name}}.";
const placeholderRegex = /{{(.*?)}}/g;
const resultArr = [];
let matchItem;

while ((matchItem = placeholderRegex.exec(inputText)) !== null) {
  resultArr.push(matchItem[1]);
}

// 输出结果:['name', 'virtual_assistant_name', 'company_name']
console.log(resultArr);

Python

import re

input_text = "Hello {{name}}, I am {{virtual_assistant_name}}, virtual assistant of {{company_name}}."
result_arr = re.findall(r'{{(.*?)}}', input_text)

# 输出结果:['name', 'virtual_assistant_name', 'company_name']
print(result_arr)

PHP

$inputText = "Hello {{name}}, I am {{virtual_assistant_name}}, virtual assistant of {{company_name}}.";
preg_match_all('/{{(.*?)}}/', $inputText, $matches);
$resultArr = $matches[1];

// 输出结果:Array ( [0] => name [1] => virtual_assistant_name [2] => company_name )
print_r($resultArr);

规则说明

  • 正则中的{{、}}匹配字面量的左右双大括号
  • 捕获组(.*?)的?代表非贪婪匹配,会在遇到最近的}}时停止匹配,避免同时匹配到多个占位符的内容
  • 如果占位符内容包含换行,需要开启正则的单行匹配模式:JavaScript添加s修饰符写成/{{(.*?)}}/gs,Python添加re.DOTALL参数写成re.findall(r'{{(.*?)}}', input_text, re.DOTALL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:45:03