私は、複数の後方参照を含む多くのPCRE正規表現を適用し、ノードJSアプリケーションでperlスタイルの変換s/\/\/(\d+)/$1/s
を適用する必要があります。ノードJS PCREの正規表現と変換のサポート
私の周りを検索し、この目的のために、これらの2つのライブラリが見つかりました:
https://github.com/mscdex/node-pcre(正規表現の応用)
https://github.com/tokuhirom/node-perl(Perlのスタイルは変換)
私は、インストール時にNPMエラーの多くを取得していますこれらのモジュールはノードv5.9.0にあります。
ノード-PCREライブラリは、私もノード-perlのライブラリのインストールの問題に遭遇した
V8のAPIに変更することにより、NodeJS 0.10バージョンの後に作業ライブラリの停止を言うissueを持っています。
ですが、私はPCREの正規表現のサポートを取得し、ノードv5.9.0に変換感謝するための方法
EDIT:コメントの一つは、下記んどのしようとしています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正規表現エンジンで直接作業する必要があります。 –