rubyの任意の正規表現の最後の(右端の)一致を見つける
質問
Rubyでテキストエディタを使用していますが、" Find"をサポートする必要があります。ユーザー提供の正規表現パターンを備えた機能。簡単な(使い慣れた)ユースケースを次に示します。
Joeユーザーはテキストファイルを編集しており、ファイルの中央のどこかにカーソルを置いています。彼は、現在のカーソル位置から任意の正規表現に一致する最も近い部分文字列を後方で検索したいと考えています。
この問題は、ファイル内のカーソル位置に先行する文字列全体にユーザーのパターンを適用することに等しいと考えています。もちろん、ファイルの先頭からすべての一致をループして最後の一致を使用することもできますが、これは非常に効率が悪いようです...しかし、私はルビー正規表現でこれを行う方法を見つけていません。お手伝いできますか?
解決
文字列でrindexメソッドを使用します。このように:
>> 'ssBssBss'.rindex(/B/)
=> 5
他のヒント
。*(foo)
を探しても、。*の貪欲な性質のおかげで、右端のfooを見つける必要があります(ただし、rindexの方が高速である可能性があります。チェックにはマイクロベンチマークが必要です)。
rindexが進むべき道だと思います。 rindexは実際に文字列を逆方向に反復するようです。 string.c の957行目を確認してください。 p>
誰かが通常の逆方向への道を見つけたようです2001年にPERLの式に戻りました。したがって、文字列を逆にして正規表現を逆にします。次に、左から右の方法を使用します。
それは今ではやり過ぎだと確信しており、rindexを使用できます
所属していません StackOverflow