notepad++删除控制字符必须用\x{200b}而非\u200b,因pcre引擎不识别unicode转义;需确保utf-8编码并勾选“匹配全部字符”,推荐正则[\x{200b}-\x{200d}\x{feff}\x{2028}\x{2029}\x{00a0}]批量清理。

Notepad++删控制字符必须用\x{200B},不是\u200B
Notepad++ 的 PCRE 引擎(7.9 及以上)不识别 \u200B 这类 Unicode 转义,输进去完全没反应——这不是你正则写错了,是引擎根本不认。必须改用十六进制格式 \x{200B},且满足两个硬性前提:文件编码必须是 UTF-8(右下角状态栏显示「UTF-8」,不能是 ANSI/GBK),必须勾选「匹配全部字符」(否则 \x{} 被当普通文本跳过)。
常见干扰字符范围建议一次性清理:[\x{200B}-\x{200D}\x{FEFF}\x{2028}\x{2029}\x{00A0}],填入「查找目标」,「替换为」留空,勾选「正则表达式」和「匹配全部字符」后点「全部替换」。
别用「扩展模式」:它会把 \x{200B} 当作 6 个字母处理,彻底失效。
删数字写 d 就够了,但得开正则模式
d 是 Notepad++ 里最简删数字写法,但它在「普通」查找模式下就是两个字面字符:反斜杠 + 字母 d,根本不会匹配任何数字。所以第一步永远是确认「查找模式」下拉菜单选的是「正则表达式」,不是「扩展」或「通配符」。
常见误操作:
• 误输成 \d(双反斜杠)——Notepad++ 不需要转义 d,直接写 d 即可
• 勾选了「匹配整个单词」——会导致 id123 中的 123 不被匹配
• 文件含全角数字(如123)或中文数字(一、二)——d 完全无效,需显式写 [0-9一-十] 等字符组
若要保留负数或小数逻辑,别强求一步到位:-?d+.d+ 先清小数,再用 -?d+ 清整数,比写复杂嵌套更稳。
删 HTML 标签内容必须勾选 Matches newline
默认单行正则里 . 不匹配换行符,所以 <script>.*</script> 在多行脚本中基本不生效,或者只删第一行。关键动作是勾选「Matches newline」(等价于 /s 修饰符)。
安全写法:
• 清空 <script></script> 内容但保留标签:(<script>]*>)[\s\S]*?(</script>) → 替换为 $1$2
• 彻底删除标签及内容:<script>]*>[\s\S]*?</script> → 替换为空
注意:[\s\S] 是兼容换行的万能字符类;*? 防止跨标签贪婪匹配(比如误吞第二个 <script></script>);[^>]* 容忍 <script type="text/javascript"></script> 这类带属性的写法。
如果 HTML 里有注释包裹的 <script></script>(如 <!-- <script>...</script> -->),正则无法识别注释边界,会误删——得先用 <!--[\s\S]*?--> 清掉所有注释,再处理 script。
OCR 文本清洗优先用字符类而非模糊量词
OCR 输出常含断行错位、多余空格、乱码标点,比如「联 系 电 话 : 1 3 8 - 1 2 3 4 - 5 6 7 8」。这时候别用 \s+ 直接删所有空白——可能把「138-1234-5678」里的短横线也连带破坏。
更可控的做法:
• 先统一空白:\s{2,} → 替换为单个空格(避免过度压缩)
• 再清理干扰符号:[①②③④⑤⑥⑦⑧⑨⑩] 或 [※★◆●] → 替换为空
• 修复 OCR 常见混淆:0[Oo] → 0(先选中再手动确认,避免误伤字母 O)
• 多行地址合并:\r\n(?=[^\r\n]) → 替换为空格(仅合并非空行前的换行)
所有操作前务必 Ctrl+Z 可撤回,大文件建议先复制备份——Notepad++ 正则不支持回滚,误操作只能靠重开文件。











