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

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

我需要知道在查找和替换中写入什么命令(如果有图片就更好了)。

  • 如果我想做一个白名单和书签所有的 ASCII 文字/行,这样非 ASCII 行将是无标记的

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

319019 次浏览

这个表达式将搜索非 ASCII 值:

[^\x00-\x7F]+

勾选“搜索模式 = 正则表达式”,然后单击 Find Next

资料来源: Regex any ASCII 字符

在记事本 + + 中,如果你进入菜单 搜索查找范围内的字符非 ASCII 字符(128-255),你可以逐步通过文档到达每个非 ASCII 字符。

如果要在文档中循环所有非 ASCII 字符,请确保勾选“ 绕过去”。

screenshot "Find in Range"

除了 ProGM 给出的答案之外,如果你在 NUL 或 ACK 这样的框中看到字符并想去掉它们,那些是 ASCII 控制字符(0到31) ,你可以用下面的表达式找到它们并删除它们:

[\x00-\x1F]+

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

[^\x1F-\x7F]+

保持新的线条:

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

下一步:

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

现在,选择 Replace option Extended 和 Replace # with n

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

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

Removing non-ASCII

为了突出显示字符,我建议在搜索窗口中使用 马克函数: 这将突出显示非 ASCII 字符,并在包含其中一个字符的行中放置书签

如果希望突出显示 ASCII 字符并在其上放置书签,可以使用正则表达式 [\x00-\x7F]进行此操作。

Highlighting Non-ASCII

干杯

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

另一种方式..。

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

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

点击查看/显示符号/显示所有字符-显示文件中的[ SOH ]字符 单击文件中的[ SOH ]符号 CTRL = H 调出替换 保留“查找内容:”的原样 将“ Replace with:”更改为您选择的字符(逗号、分号、 other...) 点击“全部替换” 没问题!

除了 Steffen Winkler:

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

忽略 r n 还有 T(回车、换行、 标签)