1

行から html タグを削除しようとする場合、考えられる方法の 1 つは、:s コマンドを使用して、タグの開始と終了を同時に理解する正規表現を作成することです。私の目的は次のとおりです。

:s %</?center>%%g

しかし、この方法では、vim は何も見つからないと言います。そのため、代わりに次のものを使用する必要がありました。

:s %</*center>%%g

片方が機能するのに、もう一方が機能しないのはなぜですか??「前のキャラクターは一度来てもいいし、まったく来ないかもしれない」と言うべきではありませんか?

4

3 に答える 3

4

?でエスケープする必要があり\ます。

ヘルプページを参照してください:

:h pattern-overview
于 2012-07-13T12:05:12.533 に答える
2

この?ように使用してvimのvery magic正規表現モード(\v)を使用する必要がある場合は、これも単語の境界として解釈<>れるため、エスケープする必要があります。

:%s,\v\</?center\>,,g

あなたが発見したように、ここでのより短いオプションは、?:をエスケープすることです。

:%s,</\?center>,,g

詳細については、を参照:help /magicしてください。

于 2012-07-13T13:21:40.287 に答える
2

それらは同じではありません。

? (疑問符) は、直前の文字と0 回または 1 回だけ一致します。たとえば、colou?r は color (0 回) と color (1 回) の両方を検索します。

* (アスタリスクまたはスター) は、先行する文字と0 回以上一致します。たとえば、tre* は、tree (2 回)、tread (1 回)、trough (0 回) を検索します。

交代する試合を教えてもらえますか?

さらに、この種の操作は、すべての発生をwiths/foo/bar/gに置き換えるコマンドで行われることを知っていますfoobar

于 2012-07-13T12:02:46.470 に答える