您可以通過使用RegExp來實現此目的。
首先,你需要轉義具有特殊含義的正則表達式的字符:
var toMatch = "I don't understand it, but: It's spam, I love it! I really really love it!";
var pattern = "It's {}, I love {}!";
function pythonParse(pattern, toMatch, bShortest) {
pattern = pattern.replace(/\\/g,"\\\\");
pattern = pattern.replace(/\$/g, "\\$");
pattern = pattern.replace(/\^/g, "\\^");
pattern = pattern.replace(/\(/g, "\\(");
pattern = pattern.replace(/\)/g, "\\)");
pattern = pattern.replace(/\[/g, "\\[");
pattern = pattern.replace(/\]/g, "\\]");
pattern = pattern.replace(/\%/g, "\\%");
pattern = pattern.replace(/\?/g, "\\?");
pattern = pattern.replace(/\:/g, "\\:");
pattern = pattern.replace(/\//g, "\\/");
pattern = pattern.replace(/\*/g, "\\*");
pattern = pattern.replace(/\./g, "\\.");
pattern = pattern.replace(/\+/g, "\\+");
pattern = pattern.replace(/\|/g, "\\|");
var lazy = "";
if(bShortest)
lazy = "?";
// Replace the parse pattern {} with (.*) regex pattern
pattern = pattern.replace(/\{\}/g, "(.*" + lazy + ")");
// Then you can use this pattern to retrieve the result
var matches = toMatch.match(new RegExp(pattern));
// Count results
if(!matches)
return "";
if(matches.length > 2) {
matches.shift();
return matches;
}
else
return matches[1];
}
var result = pythonParse(pattern, toMatch, true);
console.log(result);
請看這裏工作的例子:http://jsbin.com/vuluca/edit?js,console
編輯以允許使用可選bShortest
布爾參數懶比較。
爲什麼它的工作不是很好?告訴我們你試過的東西 – Weedoze
你應該能夠用正則表達式實現你想要的東西 – Pineda
Regexp呢? – Peter