输入:"some random text [[specialthing]] blah blah"
输出:"some random text ANOTHERTEXT blah blah"
目标:
将[[specialthing]]
替换为myFunction('specialthing');
将返回的内容。
我已经有了一个没有正则表达式的功能,但我想知道是否会有更简单/更好的方法来做到这一点。
我的代码:
data = "some random text [[specialthing]] blah blah";
for(var i = 0 ; i < data.length ; i++){
if(data[i] == '[' && data[i+1] == '['){
var start = i;
for(var j = start; j < data.length ; j++){
if(data[j] == ']' && data[j+1] == ']'){
var strInBracket = data.slice(start+2,j);
var newStr = myFunction(strInBracket);
data = data.replace('\[\[' + strInBracket + '\]\]',newStr);
}
}
}
}
解决方案:
data = "some random text [[specialthing]] blah blah";
var strInBracket = data.match(/([^\[]*)(..[^\]]*..)(.*)/)[2];
var newStr = myFunction(strInBracket.slice(2,-2));
data = data.replace(strInBracket,newStr);
我正在使用javascript。
解决方案不需要是正则表达式。
答案 0 :(得分:1)
您可以将以下正则表达式匹配为:
([^\[]*)(..[^\]]*..)(.*)
然后替换为:
'$1'+myFunction($2)+'$3' //this is pseudocode and not actual code
答案 1 :(得分:1)
答案 2 :(得分:0)