2010-12-29 17 views
0

検索の文字列にいくつかのオプションがあるように指定する方法を教えてください。 たとえば、jspPar,btnまたはjspAttで始まる組み合わせのうち、末尾に「K」という文字列が含まれているものを探したいとします。シンプルな正規表現質問(vim検索/置換)

また、元の接頭辞に応じて文字列に置き換える必要があります。 たとえば、プレフィックスがjspParの場合は、それを文字Pに置き換える必要があります。 (btnjspAttについては、BAと言いましょう)。

答えて

5

は、あなたが探しているもの

\(jsPar\|btn\|jspAtt\)[^ \t]*K 

ですか? 「スペースまたはタブ文字のこの時点では、任意の量(含ゼロ)と一致」

\(jsPar\|btn\|jspAtt\)が、その後[^ \t]*は言う、「この時点では、これらの選択肢のいずれかに一致する」と言い、そしてもちろんのKはこれを」意味Kとのマッチングが成立する。追加した質問については


はこのような何かを行うことができます:

%s/\(jsPar\|btn\|jspAtt\)[^ \t]*\zsK/\=submatch(1) == 'jsPar' ? 'P' : submatch(1) == 'btn' ? 'B' : 'A' /g 

\zsはこれだけ「K」が置き換えられます「試合はこの時点で開始していると考え」と言います。)

しかし、私がが1回のパスで置換を行うとしたら、私はそれを行うだけです。そうでなければ、私はちょうど3 s///秒で実行したい:コマンド履歴を考える

%s/jspAtt[^ \t]*\zsK/A/g 
%s/jsPar[^ \t]*\zsK/P/g 
%s/btn[^ \t]*\zsK/B/g 

を、それははるかに少ないタイピングだし、任意の計算を指定するときには、常に可能性だのに対し、また、デバッグを必要とすることは非常に考えにくいです。

+0

ORをエスケープする必要があります。 \ | http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtmlを参照してください。 – RobertB

+0

うん、すでに修正済みです。 Perl以外の正規表現のどの方言が私にそれらをエスケープするかどうかを覚えていない。 –

+0

質問に追加したことについては何か? –

関連する問題