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

如何编写正则表达式提取双花括号内的变量与函数参数?

提取双花括号内目标内容的正则表达式解决方案

需求明确

  • 提取双花括号内仅有的单个字母数字/下划线组成的变量名(如{{ name }}中的name)
  • 若括号内是函数调用格式(函数名+空格分隔的参数),忽略第一个函数名,提取后续所有参数(如{{ concat first_name last_name }}中的first_name、last_name)
  • 支持提取多个参数,需全部匹配

最终正则表达式

使用以下正则并开启全局匹配模式(g flag):

(?<=\{\{(?:\s*\w+\s+)*)\b\w+\b(?=\s*\}\})

正则解析

  • (?<=\{\{(?:\s*\w+\s+)*):正向回顾后发断言,确保匹配位置在{{之后,同时跳过可能存在的第一个函数名(允许函数名前后有空格)
  • \b\w+\b:匹配完整的单词(由字母、数字、下划线组成,\b确保不会匹配单词的一部分)
  • (?=\s*\}\}):正向先行断言,确保匹配的单词在双花括号闭合标记}}之前(允许单词和}}之间有空格)

测试验证

示例1

输入文本:

Hi {{ name }}, your full name is {{ concat first_name last_name }}

匹配结果:["name", "first_name", "last_name"]

示例2

输入文本:

"Key": "price_change_manager.msg2 {{ message }}"
"value": "{{ username }} plan to {{formatCurrence new_price currency old_price }}"

匹配结果:["message", "username", "new_price", "currency", "old_price"]

原正则问题说明

你之前使用的\{\s*\{\s*([^\}\/\s]+)\s*\}\s*\}仅能匹配单个无空格的单词,因为它通过[^\}\/\s]+限制了匹配内容不能包含空格,因此无法处理多参数的函数调用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:01:36