如何用正则匹配识别字符串中所有包裹在成对花括号内的变量文本
正则匹配方案
你需要的正则可以写成:
\{[^{}]+\}
配合全局匹配模式即可提取所有符合要求的成对花括号及内部内容。
规则说明
\{:匹配左花括号,加反斜杠转义避免和正则量词语法冲突[^{}]+:匹配1个及以上非花括号的字符,确保不会跨花括号匹配、也不会匹配空的{}- 如果需要兼容空花括号
{},可以把+替换为*
- 如果需要兼容空花括号
\}:匹配右花括号- 必须开启全局匹配模式(大多数语言正则写法后缀加
g)才能返回所有匹配结果,而非仅第一个匹配项
不同语言实现示例
JavaScript 实现(匹配你给出的findAttributes调用场景)
function findAttributes(text) { const regex = /\{[^{}]+\}/g; return text.match(regex) || []; } // 测试用例 const input = `Hello {name}, This is {company} here to tell you about our recent development of our new product {product}`; console.log(findAttributes(input)); // 输出:["{name}", "{company}", "{product}"]
Python 实现
import re def find_attributes(text): return re.findall(r'\{[^{}]+\}', text)
特殊场景调整
如果你的业务场景存在花括号嵌套的情况(比如{user{name}}),上述正则只会匹配到最内层的{name},如果需要匹配完整的外层嵌套结构,可以根据你用的编程语言是否支持递归正则做对应调整,常规无嵌套场景上述方案完全够用。
内容的提问来源于stack exchange,提问作者Sean J
相关产品推荐
相关产品推荐

