2

約40k行のテキストファイルを想定します

Color LaserJet 8500, Color Laserjet 8550, Color Laserjet 8500N, Color Laserjet 8500DN, Color Laserjet 8500GN, Color Laserjet 8550N, Color Laserjet 8550DN, Color Laserjet 8550GN, Color Laserjet 8550 MFP, 

例として

any1は、数字の後、コンマの前にあるすべてのデータを削除できる正規表現で私を助けることができますか?8500Nがちょうど8500になるように

最終結果は

Color Laserjet 8500, Color Laserjet 8550, Color Laserjet 8500, Color Laserjet 8500, Color Laserjet 8500, Color Laserjet 8550, Color Laserjet 8550, Color Laserjet 8550, Color Laserjet 8550, 

notepad ++(または他の簡単に利用できるプログラム)で重複を削除するための最良の方法を何らかの形で提案できる人には、驚くべきボーナスの称賛があります

4

3 に答える 3

2

の各一致(?<=\d)[^\d,]+(?=,)を空の文字列に置き換える必要があります。

上記の正規表現には、「数字とコンマの間にある1つ以上の非数字および非コンマ文字」と記載されています。

文字列(または行)の最後に末尾の文字が付いたそのような番号が発生する可能性があり、後ろにコンマがない場合でもそのトリムが必要な場合は、次を使用します。(?<=\d)[^\d,]+(?:(?=,)|$)

これは似たようなもので、最初の意味の後ろに「または文字列の終わり」を追加するだけです。


アップデート:

Notepad ++は正規表現のルックアラウンドをサポートしていないように思われるため、解決策は(\d)([^\d,]+)(,)\1\3または(\d)[^\d,]+(,)に置き換えること\1\2です。

于 2012-06-27T17:17:41.627 に答える
0

notepad++での正規表現のスクリーンショット... Notepad++スクリーンショット

于 2012-06-27T17:26:26.183 に答える
0

これはどう:

(.*?\d+)\D*(,)

全体に一致しますが、グループ1と2を取得するだけで済みます。これにより、数字とコンマの間の数字以外の数字が省略されます。

置換は次のようになります。

\1\2

これがこれを行う唯一の方法であることを詳しく説明するSOです。

または、Arithmomaniacが示唆しているように、1つのグループでこれを実行し、各一致の後にコンマを追加して戻すことができます。

(.*?\d+)\D*,

置き換えは

\1,
于 2012-06-27T17:03:51.483 に答える