Vimで2つの類似した文字列の1つを検索する方法は?


29

Vimで、「planA」または「planB」に一致する検索を実行したい場合、これを実行できることがわかります。

/plan[AB]

これは、正規表現が文字セットとしてAまたはBのいずれかを許可するために機能します。

しかし、2つの完全な文字列のいずれかを指定するにはどうすればよいですか?たとえば、「planetAwesome」または「planetTerrible」?

これは、「planetAnythingHereAsLongAsItsJustLetters」とともにこれらの両方に一致します。

planet\([a-zA-Z]*\)

「planetAwesome」または「planetTerrible」に完全に一致する文字列のみを一致させるにはどうすればよいですか?


実際、角括弧は文字クラスを作成します。plan[ABC]一致したplanAplanBplanC同様に良好。
クリストファーボトムス

@molsecules-そう、ありがとう。質問を更新しました。
ネイサンロング

回答:


43
/planet\(Awesome\|Terrible\)

関連するドキュメントを表示するには、を発行し:help /、「パターンの定義」セクションまでスクロールします。


1
あ!これを試したとき、括弧をエスケープしていませんでした。興味深い-私はリテラル文字をエスケープする必要があると思った。
ネイサンロング

1
@Nathan:さまざまな正規表現エンジンには、特殊文字にするためにエスケープする必要がある文字と、リテラルにするためにエスケープする必要がある文字(POSIX BREとEREなど)について異なるルールがあります。あなたは特別なエスケープのいずれかを含むことによって、当たりパターンベースでのVimでエスケープ要件を微調整することができます:\m\M\v、または\V'magic'オプションもありますが、(上記のフラグのいずれかでオーバーライドされない限り)グローバルな効果があるため、通常はそのままにしておくのが最善です。
クリスジョンセン

1
非常に魔法を使用すると、次のようになります/\vplanet(Awesome|Terrible)
。– SergioAraujo

4

ジルの答えに追加するには、いくつかの項目を追加することをお勧めします。

/\<planet\(Awesome\|Terrible\)\>

\<「単語」(本質的に英数字)の始まりを示します「単語」(本質的に英数字)
\>の終わりを示します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.