繁体   English   中英

如何使用正则表达式和 Notepad++ 删除所有非 ASCII 字符?

[英]How do I remove all non-ASCII characters with regex and Notepad++?

我搜索了很多,但没有写到如何从 Notepad++ 中删除非 ASCII 字符。

我需要知道在查找和替换中要写什么命令(有图片会很棒)。

  • 如果我想创建一个白名单并为所有 ASCII 单词/行添加书签,那么非 ASCII 行将不被标记

  • 如果文件很大并且无法选择所有 ASCII 行,而只想选择包含非 ASCII 字符的行...

此表达式将搜索非 ASCII 值:

[^\x00-\x7F]+

勾选“搜索模式=正则表达式”,然后单击查找下一个

来源: 正则表达式任何 ASCII 字符

在 Notepad++ 中,如果您转到菜单搜索查找范围内的字符非 ASCII 字符 (128-255) ,您可以逐步浏览文档到每个非 ASCII 字符。

如果要在文档中循环查找所有非 ASCII 字符,请务必勾选“环绕”。

屏幕截图“在范围内查找”

除了 ProGM 的回答之外,如果您在 NUL 或 ACK 等框中看到字符并想要摆脱它们,这些是 ASCII 控制字符(0 到 31),您可以使用以下表达式找到它们并将它们删除:

[\x00-\x1F]+

为了删除所有非 ASCII AND ASCII 控制字符,您应该删除与此正则表达式匹配的所有字符:

[^\x1F-\x7F]+

要删除所有非 ASCII 字符,可以使用以下替换: [^\x00-\x7F]+

删除非 ASCII

要突出显示字符,我建议在搜索窗口中使用标记功能:这会突出显示非 ASCII 字符并在包含其中一个字符的行中放置一个书签

如果您想突出显示并在 ASCII 字符上添加书签,则可以使用正则表达式[\x00-\x7F]来执行此操作。

突出显示非 ASCII

干杯

要保留新行:

  1. 首先为换行选择一个字符...我使用了#。
  2. 选择替换选项,扩展。
  3. 输入 \n 替换为 #
  4. 点击全部替换

下一个:

  1. 选择替换选项正则表达式。
  2. 输入这个:[^\x20-\x7E]+
  3. 保持替换为空
  4. 点击全部替换

现在,选择替换选项扩展并用\n替换#

:) 现在,你有一个干净的 ASCII 文件;)

另一个好技巧是在你的编辑器中进入 UTF8 模式,这样你就可以真正看到这些有趣的字符并自己删除它们。

另一种方式...

  1. 如果您还没有 Text FX 插件,请安装它
  2. 转到 TextFX 菜单选项 -> 将所有不可打印的字符转换为 #。 它将用 3 # 个符号替换所有无效字符
  3. 转到查找/替换并查找###。 用空格替换它。

如果您不记得正则表达式或不想查找它,这很好。 但是其他人提到的正则表达式也是一个很好的解决方案。

单击查看/显示符号/显示所有字符 - 显示文件中的 [SOH] 字符 单击文件中的 [SOH] 符号 CTRL=H 调出替换 保留“查找内容:”原样 更改'替换为:'到您选择的字符(逗号,分号,其他......)点击'全部替换'完成并完成!

因为我无法评论。 除了史蒂芬温克勒:

[\x00-\x08\x0B-\x0C\x0E-\x1F]+

忽略 \r \n AND \t (回车、换行、制表符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM