0

次のような複数の行を含むファイルがあるとしましょう

A.B C B.DAT
E.F C F1.DAT

重複している行 (たとえば B) を特定したいと思います。ただし、重複の後に .DAT が続く場合のみ (各要素 A、B、C、... は任意の長さにできることに注意してください)

したがって、前述の例では、最初の行は一致を返す必要があり、2 行目は一致しないはずです。

重複 (B.DAT になる) の削除を続行したいのですが、行ごとに 2 番目のオカレンスのみを一致させるにはどうすればよいですか?

4

1 に答える 1

8

この正規表現はあなたが望むことをするはずです(私があなたを理解していれば...)

/\(.\).*\zs\1\.DAT

これは、

\(         2: and "keep" it for later with `\1`
 .      1: get any character
\)         2:
.*            3: Match any number of characters ...
\zs              4: (and set the start of the matched region)
\1                  5: ... followed by the kept character (step 2)
\.DAT                  6: followed by .DAT

この正規表現を使用するB.DATと、

%s/\(.\).*\zs\1\.DAT//

更新複製は複数の文字で構成されている可能性があることが判明しました。その場合、正規表現は になり\(\S\+\).*\zs\1\.DATます。は\S\+任意の数 > 1= の非空白文字に一致するようになり、残りの正規表現は同じです。

于 2012-08-21T09:00:15.553 に答える