如何使用 Notepad++ 或 Emeditor 删除所有包含非 ASCII 字符的行

如何使用 Notepad++ 或 Emeditor 删除所有包含非 ASCII 字符的行

如何删除所有包含非 ASCII 键盘字符的行?

我尝试了很多次正则表达式代码,但没有一个能正常工作,我甚至尝试了这个代码[^\x00-\x7F]+,但它没有选择所有的字符

我想到的是使用这种方式[^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?],但仍然不起作用,因为其中一些字符没有被取消选择,例如\ / | { } [ ] $ # ^ ( )

  1. 如果某一行包含以下列表中没有的字符,我想将其删除或添加为书签

    0123456789`~!@#$%^&*()-_=+[]{}\/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
  2. 简单示例:在这里可以找到更多类似的字符:https://en.wikipedia.org/wiki/List_of_Unicode_characters

    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. 如果您的文件名为foo.txt 你可以生成一个文件酒吧.txt使用以下命令:

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

各部分解释:

cat foo.txt输出文本文件,然后通过管道|将输出重定向到命令,该命令将删除sed > bar.txttr -cd之后列表中不存在的每个字符,我们将输出重定向到文件'...'. Followed by a pipe toto remove the empty lines. Last but not least with酒吧.txt

谢谢:

答案3

在 Notepad++ 中这很容易:

  1. 菜单搜索>标记...

  2. 查找内容:[^\x00-\x7F]
    ☑ 标记线
    (•) 正则表达式

  3. 找到所有

  4. 菜单搜索>书签>删除书签行

相关内容