我需要應用大量的具有多個反向引用的PCRE正則表達式,並在節點JS應用中應用perl樣式轉換s/\/\/(\d+)/$1/s
。節點JS PCRE正則表達式和變換支持
我尋找了一圈,發現此目的這兩個庫:
https://github.com/mscdex/node-pcre(正則表達式的應用程序)
https://github.com/tokuhirom/node-perl(Perl的風格變換)
安裝過程中,我得到了很多NPM錯誤Node v5.9.0中的這些模塊。
的節點PCRE庫有一個issue它說的圖書館服務站將於V8 API改變
我跑進節點-perl的庫安裝問題,以及0.10的NodeJS版本之後的工作。
有沒有辦法讓我得到了PCRE正則表達式的支持,並在節點v5.9.0轉換
感謝
編輯:下面一個意見之一是指定在嘗試這做一個PCRE正則表達式不能在JavaScript中工作。這裏的例子:
var fs = require("fs");
var regex = '<input type=\"hidden\"\s*name=\"itemId\"\s*value=\"(?P<sku>[\w\-]+)\"[^<]*>.*?<SCRIPT LANGUAGE=\'JavaScript\'[^<]*>.*?(\g{sku}Matrix\s*\=.*?<\/SCRIPT>)';
var page = fs.readFileSync("./page.html");
var re = new RegExp(regex);
var matchStr = "";
matchStr = page.replace(re, function (match, $1) { return $1; });
console.log(matchStr);
響應
SyntaxError: Invalid regular expression: /<input type="hidden"s*name="itemId"s*value="(?P<sku>[w-]+)"[^<]*>.*?<SCRIPT LANGUAGE='JavaScript'[^<]*>.*?(g{sku}Matrixs*=.*?</SCRIPT>)/: Invalid group
at new RegExp (native)
at Object.<anonymous> (/home/user/project/abc.js:7:10)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:142:18)
at node.js:939:3
由於什麼原因Javascript正則表達式不足? –
正則表達式都是在PCRE中寫的。我需要在我的應用程序中使用它們 –
除非這些正則表達式使用特殊的PCRE功能,否則它們中的大多數應直接與Javascript正則表達式引擎以及其他幾乎沒有更改的其他應用程序一起使用。 –