我正在阅读一个文本文件,其中包含许多包含占位符的行,如下所示:" {name_of_placeholder}"。还有另一个文件就像地图一样 - 键是每个占位符的名称,每个占位符都有一个值。我想使用正则表达式查找第一个文件中的每个占位符,并将{name_of_placeholder}替换为第二个文件中的相应值。
我想到的第一件事就是在" {}"之间捕获组,但是如何在字符串之外使用它?如果那不可能,也许有人可以想到另一种方式来做到这一点?
提前致谢!
答案 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);