私は、SQLの予約語の任意のセットを大文字にするためのマクロをまとめてみました。Vimは正規表現の文字制限を持っていますか?
:nnoremap <leader>c :s/\(\<use\>\)\|\(\<create\>\)\|\(\<select\>\)\|\(\<update\>\)\|\(\<delete\>\)\|\(\<not\>\)\|\(\<null\>\)\|\(\<unique\>\)\|\(\<constraint\>\)\|\(\<references\>\)\|\(\<join\>\)\|\(\<on\>\)\|\(\<inner\>\)\|\(\<outer\>\)\|\(\<left\>\)\|\(\<group\>\)\|\(\<order\>\)\|\(\<having\>\)\|\(\<by\>\)/\U&/g<CR>
マクロは私の.vimrcに書き込まれます。これは正常に読み込まれます。私の周りに検索してきた
E872: (NFA regexp) Too many '('
E51: Too many \(
E476: Invalid command
が、正規表現には限界があることを示すためには何も見つかりませんでした。しかし、私はマクロVimはいくつかのエラーを吐く実行したとき。エラーで私の最高の読んだことは、私が何かを正しく脱出できなかったことですが、私はそれを見つけることができません。
ここで正規表現の制限を超えましたか?
、 10分の1は\ 0です。これはマッチ全体を表します。 OPの正規表現はとにかくグループ化する必要はなく、大括弧を削除するだけでうまくいきます。 –
@EndreBothコメントをいただきありがとうございます。私は、さまざまな角度から質問をしていると思う。私は "なぜこのエラーメッセージを持っているのですか"や "正規表現にある制限を超えましたか?"しかし、あなたは絶対に正しいです、OPの正規表現を最適化する大きなスペースがあります。 – Kent
ああ!私はパイプでグループ分けが必要でないことに気づいていませんでした。ケント、情報のおかげで - グループ分けに限界があることを知っておいてよかった。 –