はそうのような文字列があるとします。この中`[a-zA-Z] *`が先頭の空白を含む単語と一致しないのはなぜですか?
aWordToRemove;
電源を入れ、それを:私はコマンド:s/[a-zA-Z]*/TEST/
を実行した場合
TEST;
が、それは何も一致していません。
:s/[a-zA-Z]\w*/TEST/
を実行すると、aWordToRemove
がTEST
に置き換えられ、先頭の空白と末尾のセミコロンがそのまま残ります。
先頭の空白がある場合、最初の正規表現で単語が見つからないのはなぜですか?
\w
を*
の直前に置くのはなぜですか?
EDIT:
Vimに細心の注意のようです。ここでは、動作している正規表現と動作していない正規表現のいくつかを示します。
ワーキング正規表現
s/[a-zA-Z]\w*/TEST/
s/[a-zA-Z][a-zA-Z]*/TEST/
s/[a-zA-Z]\+/TEST/
が動作しない正規表現
s/[a-zA-Z]*/TEST/
s/[a-zA-Z]+/TEST/
グローバル修飾子が必要なためです。あるいは、 '*'の代わりに '+'を使うのが良いでしょう。そうでなければ、パターンは最初に一致します。 –
必要なパターンは 's/[a-zA-Z] \ +/TEST /'です。 – 4castle
バックスラッシュが必要な理由は分かりますか? – ncphillips