JavaScript RegExp
クラスにはフィールドがあります。 確かに、それは約 a ですが、私たちはこの投稿の 1 つの明白な窮状に特化しています。 Socket では現在、RegExp
を含む重大なフィールドが発生しており、修正を勧めたいと考えています.
ソケットコード予測エンジンは、レコードデータのスキャンに約 1 時間かかりますが、お客様もタイムリーな結果に満足できるように、それをフラッシュのように実現するよう努めています。 長く確立された表現は、全体として、わずかに迅速で表現力豊かですが、JS での取得には憂鬱な側面があります。 つまり、マッチング開発か非開発かを教えてもらうのは面倒です
あまりにもナイーブな方はeval
を見て判断してください。 一部のファイル:
const eval_pattern=/bevalb/g // ファイルの内容: 'not_eval_at_all ()' for await (ファイルの定数チャンク) { eval_pattern.exec(chunk) }
これには本当にバグといくつかのバグがあります
偽陽性。 また、I/O がチャンクを "not_"
、"eval"
、"_at_all()"
。 これを修正することは、入力をバッファリングすることを意味します.入力プロットをバッファリングすると、 "not_"
であったとしても、再び検索されることはありません.
入力プロットのバッファリング追加のブックキーピング、文字列連結、および手動操作 eval_pattern.lastIndex
特に. )b は、( と比較して cherish /ab/.test('a')
と比較した場合、一致後に何が起こるかに応じて交互に使用することもできます。 /ab/.test(‘ab’)。 したがって、試合が少し中断している場合は、試合が落ち着いた後にバッファリングを保留することが重要です。 コードはバッファリングを保留する必要があり、ビット境界での大量の一致を誤って文書化する可能性があります.
さらに、上記と同等のコードを使用すると、さまざまな種類のパターンが与えられた場合、さまざまな種類のバグが偽陰性を大切にすることは間違いありません:
const safe_str='' for (const チャンクの ) { safe_str +=chunk.replaceAll(/BAD_WORD/g, '') } // safe_str には BAD_WORD が含まれています。 TC39 に特性を提案し、正規表現マッチングの段階的な開発を提示するための答えを打ち砕くためにチャンピオンを探し出そうとしている理由. おそらく、私たちの 提案 をのぞき見して、実際には、物語る不測の事態が少しあります。 つまり、量指定子の後読み、先読み、および集約が重要です。
私たちの希望は、I/O で無駄な怠惰な時間を減らし、重複を減らすために、提案内にリストされているターゲットを使用することです。文字列のスキャン、およびメモリ ストレスの軽減。 そのまま実行すると、JS VM がスピン ダウンされているにもかかわらず、開発を続行する可能性さえあります。 これは、JS でのテキスト処理を大幅に強化できる、非常に興味深いものです。
𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺