我需要应用大量的具有多个反向引用的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正则表达式引擎以及其他几乎没有更改的其他应用程序一起使用。 –