Notepad++ または Emeditor を使用して ASCII 以外の文字を含む行をすべて削除する方法

Notepad++ または Emeditor を使用して ASCII 以外の文字を含む行をすべて削除する方法

ASCII 以外のキーボード文字を含むすべての行を削除するにはどうすればよいですか?

正規表現コードを何度も試しましたが、どれも期待通りには機能しませんでした。このコードも試しました[^\x00-\x7F]+が、すべての文字が選択されませんでした。

私の頭に浮かんだアイデアはこの方法を使うことです[^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]が、この文字の一部が選択解除されなかったため、まだ機能しません\ / | { } [ ] $ # ^ ( )

  1. 行に以下のリストにない文字が含まれている場合は、削除するかブックマークします

    0123456789`~!@#$%^&*()-_=+[]{}\/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
  2. 簡単な例: 他にもこのような文字が見つかります:https://en.wikipedia.org/wiki/Unicode 文字の一覧

    0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    ¤©ª«¬¯°±²³´µ¶·¸¹º»¼½¾¿÷ÆIJŒœƔƕƋƕ
    ƜƝƢƸƾDžNJNjǽǾǼɁɀȾɎʒəɼʰʲʱʴʳʵʶʷʸˁˀˇˆ˟ˠ
    ˩˧Ͱͱͳʹͼͻͺ͵ͿΏΔΘΞΛΣΠΦΧΨΩΪΫάέήίΰαβδε
    θηκλμξπςρφχψωϊϋϏώϑϐϓϒϔϕϖϠϟϞϝϜϡϢ
    ϤϣϧϫϬϮϯϰϱ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲
    ₳₴₵₶₷₸₹₺₻₼₽₾₿⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜
    ⅝⅞⅟℠℡™℣ℤ℥Ω℧ℨ℩KÅℬℭ℮ℯ⇀⇁ↀↁↂↃↄ
    ⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⅀⅁⅂⅃⅄ⅅ
    ⅆⅇⅈⅉ⅊⅋⅌⅍ⅎ⅏ⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽ
    
  3. 期待される結果:

    0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    

答え1

[^\x00-\x7F]正常に動作しますが、 のような長い文字クラスを使用する場合は、[^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]特別な意味を持つ文字をエスケープする必要があります (つまり-[]\、改行を追加します\r\n

正規表現は次のようになります:

 [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]
 #                    ^    ^ ^   ^            ^^^^

  • Ctrl+H
  • 検索対象:[^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]+$ しかし、繰り返しになりますが、[^\x00-\x7F]問題なく機能し、より読みやすくなります
  • と置換する:LEAVE EMPTY
  • チェック ラップアラウンド
  • 正規表現をチェック
  • Replace all

与えられた例の結果:

0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

答え2

このソリューションにこだわりがなく、Notepad++にこだわっていない場合は、ここで示したように、Win 10にbashをインストールできます。https://superuser.com/a/1252271/715210(申し訳ありませんが、いつも Linux の回避策について質問に戻ってしまいます ;) )

解決策はあるが、残念ながらアポストロフィも失われることになる。'

  1. スタートメニューからWindowsのbashを開く
  2. ファイルが保存されているフォルダに移動しますcd /mnt/c/path/folder(ドライブ C: は /mnt/c にあります)
  3. ファイル名がテキスト ファイルを生成できるバー.txtこのコマンドで:

    cat foo.txt | tr -cd '[:alnum:]\n\r~!@#$%^&*()-_=+{}\|;:<>,./?"`' | sed '/^$/d' > bar.txt

各部の説明:

cat foo.txtテキストファイルを出力し、パイプを使用して|出力をコマンドにリダイレクトします。このコマンドは、 sed > bar.txt`tr -cdの間にリストにないすべての文字を削除します。出力をファイルにリダイレクトします。'...'. Followed by a pipe toto remove the empty lines. Last but not least withバー.txt

感謝:

答え3

Notepad++ ではこれは簡単です:

  1. メニュー検索>マーク...

  2. 検索対象: [^\x00-\x7F]
    ☑ マークライン
    (•) 正規表現

  3. プレスすべて検索

  4. メニュー検索>ブックマーク>ブックマークした行を削除する

関連情報