私はいくつかの軽い正規表現を使って特定のトークンを検出する構文解析ステートマシンを構築しています。私は大きな文字列の任意の位置を見て、正規表現がその位置から厳密に一致するかどうかを判断できるようにしたい。私は解析している文字列は任意に大きくなる可能性がありますと私は潜在的に文字列のスライスを取って、非グローバル正規表現^
と一致すると非常に非効率的です(私は思う? numberRe.exec(longString.slice(numberRe.lastIndex))
が持っているであろうように、a/g Javascript正規表現の残りの部分をマッチさせることは可能ですか?
var longString = 'abc123defghi45jk...';
var numberRe = /\d+/g;
numberRe.lastIndex = 3;
var match = numberRe.exec(longString);
console.log(match);
とnumberRe.lastIndex
が正規表現に一致する部分文字列の上にあるときにのみ正規表現マッチを持っている:私はこのような何か行うことができているのが好きでした何
同じ結果。
これは可能ですか?
あなたの表現が単純な場合は、すべての正規表現を使用しないほうが良いと独自のトークナイザを書き込むことができます。 – plalx
これは最小限の例です – ayoon
再帰的な降下トークナイザは実際には非常に書きやすいです。 – plalx