首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从特定格式的字符串中获取变量列表

从特定格式的字符串中获取变量列表
EN

Stack Overflow用户
提问于 2019-04-28 14:33:46
回答 2查看 43关注 0票数 1

我有一个复杂的字符串,它可以包含特定格式的变量,如/##{[^}{\(\)\[\]\-\+\*\/]+?}##/g,我想将这些变量提取到一个数组中。

例如:

代码语言:javascript
运行
复制
var x= "sgsegsg##{xx}gerweg##{xx1}##rgewrgwgwrg}##ferwfwer##{xx2}rgrg##{xx3}####{xx4}####{errg}}}";

function getVariableNames (param) {
   return param.match(/(##{[^}{\(\)\[\]\-\+\*\/]+?}##)+?/g)
}

getVariableNames(x); 

上面的行返回["##{xx1}##", "##{xx3}##", "##{xx4}##"]

我想在哪里找到['xx1', 'xx3', 'xx4']

EN

Stack Overflow用户

回答已采纳

发布于 2019-04-28 14:40:19

根据您的模式,因为##s中的部分不包含大括号,所以只需重复非大括号就足够了:[^}]+。匹配重复的非括号字符,然后遍历匹配并提取捕获的组:

代码语言:javascript
运行
复制
const str = "sgsegsg##{xx}gerweg##{xx1}##rgewrgwgwrg}##ferwfwer##{xx2}rgrg##{xx3}####{xx4}####{errg}}}";
const pattern = /##{([^}]+)}##/g;
let match;
const matches = [];
while (match = pattern.exec(str)) {
  matches.push(match[1]);
}
console.log(matches);

在较新的环境中,您可以改为查找##{

代码语言:javascript
运行
复制
const str = "sgsegsg##{xx}gerweg##{xx1}##rgewrgwgwrg}##ferwfwer##{xx2}rgrg##{xx3}####{xx4}####{errg}}}";
const pattern = /(?<=##{)[^}]+(?=}##)/g;
console.log(str.match(pattern));

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55887648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档