2
私はコンポーネントをRustコンパイラのエラー出力にマッチさせようとしています。これは私が使用しています正規表現です:`/ REG/g`と` new RegExp() `の動作が異なりますか?
let newErrorRegex = /(warning|error|note|help)(?:\[(.*)\])?\: (.*)\s+--> (.*):(\d+):(\d+)\n(?:((?:.+\n)+)\.+)?(?:[\d\s]+\|.*)*((?:\s+=.*)+)?/g;
それが正常に動作しますが、それはあまりにも長いですので、私は複数行にそれを破るしたいと思います。それで試しましたnew RegExp()
:
let newErrorRegex = new RegExp('(warning|error|note|help)(?:\[(.*)\])?\: (.*)\s+--> (.*):(\d+):(\d+)\n(?:((?:.+\n)+)\.+)?(?:[\d\s]+\|.*)*((?:\s+=.*)+)?', 'g');
const match = newErrorRegex.exec(output);
今回は動作しません。しかし、いくつかの単純な例は、そのような問題を持っていない、例えば、
let testRegexp = new RegExp('abc', 'g');
const match = testRegexp.exec('abcabc');
/REG/g
とnew RegExp()
の違いは何ですか?どうすればこの問題を解決できますか? TypeScript 1.8.7と2.0の両方を試しましたが(関連はないとは思いますが...)。
ありがとうございます、ありがとうございます!
FYI、錆コンパイラ出力のサンプルは次のようになります。あなたは\
は彼らが何であるかであるとする構文/foo/
を使用しているあなたの最初の行でhttps://regex101.com/r/vKFWYW/1
私は実質的にあなたがリアルタイムでそれを追加見ていた@Soviut 37sec、かなり速い編集:) –
;)あなたは完全にするためにあなたの答えに逃げスラッシュとの表現の修正版を追加する必要があります。 – Soviut
@ソビエット完了:) –