4

Notepad++ で 200.000 行以上のテキスト ファイルを使用しています。各行には 1 つの単語しかありません。1文字のみを含むすべての単語(例: I )と2文字のみを含む単語(例: as )をすべて取り除いて削除する必要があります。

このように通常の正規表現でパスできると思っていまし[a-zA-Z]{1,2}たが、何も認識しません(マークしようとしています)。

私は手動で検索を行いましたが、その長さの単語が存在することを知っているので、間違っているのは私の正規表現コードだけです。Notepad ++でこれを行う方法を知っている人はいますか???

乾杯
- メスティカ

4

4 に答える 4

6

単語だけを削除して行を空のままにしたい場合は、次のようにします。

^[a-zA-Z]{1,2}$

これを空の文字列に置き換えます。^行の先頭と$末尾のアンカーです (Notepad++ の正規表現は複数行モードで機能するため)。

行を完全に削除する場合は、次を検索します。

^[a-zA-Z]{1,2}\r\n

そして空の文字列に置き換えます。ただし、これは Notepad++ 6 より前では機能しないため、最新のものであることを確認してください。

\r\nファイルの特定の行末に置き換える必要があることに注意してください!

Tim Pietzker が示唆したように、空行も削除するプラットフォームに依存しないソリューションは次のようになります。

^[a-zA-Z]{1,2}[\r\n]+

空行を削除せず、1 文字または 2 文字の行のみを削除する、プラットフォームに依存しないソリューションは次のようになります。

^[a-zA-Z]{1,2}(\r\n?|\n)
于 2012-10-12T15:59:52.807 に答える
2

私はメモ帳++を使用していませんが、一致するものが多すぎることが原因である可能性があります-単語の境界を含めてみてください(expは2文字のすべてのセットに一致します)

\b[a-zA-Z]{1,2}\b
于 2012-10-12T15:59:50.200 に答える
1

指定した正規表現は、(Notepad++ の [検索] ダイアログでも) 1 ~ 2 文字を検出する必要がありますが、あなたが考える方法ではありません。正規表現が行の先頭から始まり、最後に^and$で終わることを確認する必要があります。

^[a-zA-Z]{1,2}$

Notepad++ バージョン 6.0では PCRE エンジンが導入されているため、現在のバージョンでこれが機能しない場合は、最新のバージョンに更新してみてください。

于 2012-10-12T16:00:00.857 に答える
1

明示的な量指定子をサポートしていないバージョンの Notepad++ を使用しているようです。そのため、一致がまったくありません ({}は特殊記号ではなくリテラルとして扱われます)。

解決策は、やや長い置換を使用することです。

\w\w?

...しかし、この正規表現は短い単語だけでなく、任意の記号と一致するため、これは話の一部にすぎません。そのためには、次のようなものが必要です。

^\w\w?$
于 2012-10-12T16:10:17.850 に答える