[英]Regex: Replace String inside Pattern for Return Value of Function
輸入: "some random text [[specialthing]] blah blah"
輸出: "some random text ANOTHERTEXT blah blah"
目標:
用myFunction('specialthing');
替換[[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。
解決方案不需要是正則表達式。
您可以將以下正則表達式匹配為:
([^\\[]*)(..[^\\]]*..)(.*)
然后替換為:
'$1'+myFunction($2)+'$3' //this is pseudocode and not actual code
演示: http : //regex101.com/r/iC0pK1
在這種情況下,正則表達式或多或少地設計為做你想要的。 編寫邏輯來為你的模式手動替換字符串將是相當多的工作,大量的索引數學和正則表達式使得不必手動執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.