文字列、ドット、2文字が順番に来るVimのすべての文字列を一致させますか?

文字列、ドット、2文字が順番に来るVimのすべての文字列を一致させますか?

たとえば、約800行の長さのさまざまなドメイン名を含むファイルがあります。私たちはvimを使ってwww.example.**で始まるすべてのドメイン名をすばやく見つけたいと思います。ここで、**は任意のタイプの2文字です。

example.site"
example.link]"
example.example'
example.ex'
example.xx]"'

これでvimで用語を使用して検索できます。しかし、上記の例で見つけることがexample.できるように一致させるためにワイルドカードをどのように使用しますか?example.ex' and example.xx]"

私たちはこのように文字列を強調したくない

> example.site" 
> example.link]" 
> example.example'

ちょうどexample.ex and example.xx (他のすべての文字列を削除し、一意に一致する文字列を保持できる場合はより良いでしょう)

ベストアンサー1

あなたが使用できる:

/example\.\w\w\W

「例」を検索してみてください。 2つの「単語文字」\wと「単語以外の文字」が順番に続きます。\W

パターンと一致しないすべての行を削除するには、次の手順を実行します。

:v/example\.\w\w\W/delete

それ以外の場合:

:v/example\.\w\w\W/d

または、否定でg [lobal]コマンドを使用してください!

:g!/example\.\w\w\W/d

上記の3つのコマンドは次のとおりです。

example.site"
example.link]"
example.example'
example.ex'
example.xx]"'

以下を入力してください:

example.ex'
example.xx]"'

修正する

これらのパターンが同じ行にある場合を処理するには、次の手順を実行します。

example.site"
example.example' example.ex' example.link]"
example.xx]"'

次の検索パターンを使用できます。

/example\.\w\w\w[^ ]* \?

「はい」を見つける方法で動作します。 3つの「単語文字」の後に、任意の数の文字が続きます。いいえ空白[^ ]*で、オプションで空白で終わります \?

したがって、一致するものを何もないものに置き換えることができます。つまり、最初gに見つかった一致だけでなく、行内のすべての一致にも代替項目が適用されます。

:%s/example\.\w\w\w[^ ]* \?//g

取得するには:


example.ex' 
example.xx]"'

(以下を使用して空白行を削除することもできます:g/^$/d|:%s/example\.\w\w\w[^ ]* \?//g | %g/^$/d

おすすめ記事