在正则表达式字符串之外重用捕获的组

时间:2017-01-09 12:29:44

标签: regex placeholder

我正在阅读一个文本文件,其中包含许多包含占位符的行,如下所示:" {name_of_placeholder}"。还有另一个文件就像地图一样 - 键是每个占位符的名称,每个占位符都有一个值。我想使用正则表达式查找第一个文件中的每个占位符,并将{name_of_placeholder}替换为第二个文件中的相应值。

我想到的第一件事就是在" {}"之间捕获组,但是如何在字符串之外使用它?如果那不可能,也许有人可以想到另一种方式来做到这一点?

提前致谢!

1 个答案:

答案 0 :(得分:0)

虽然您还没有定义语言,但无论语言是什么,您都可以尝试以下方法:



var dict={}
const regex1 = /(.*)=(.*)/gm;

// let str1 be the second file (dictionary)
const str1 = `abc1=1
abc2=2
abc3=3
abc4=4
abc5=5
abc6=6
abc7=7
abc8=8
abc9=9
abc10=10
abc11=11
abc12=12`;
let m1;

while ((m1 = regex1.exec(str1)) !== null) {
    if (m1.index === regex1.lastIndex) {
        regex1.lastIndex++;
    }
  dict[m1[1]]=m1[2];
}
//console.log(dict);



const regex = /\{(.*?)\}/gm;
// let str be the first file where you want the replace operation on {key...} 
var str = `adfas{abc1} asfasdf
asdf {abc3} asdfasdf
asdfas {abc5} asdfasdf
asdfas{abc7} asdfasdfadf
piq asdfj asdf
`;
let m;

while ((m = regex.exec(str)) !== null) {
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
      str=str.replace("\{"+m[1]+"\}",dict[m[1]]);
    
}
console.log(str);