在vim中反转regexp

Chr*_*s J 9 regex vim

Stack Overflow上有一些"如何反转正则表达式"的问题,但是我找不到vim的一个问题(如果确实存在,我的Google-fu今天缺乏).

本质上我想匹配所有不可打印的字符并删除它们.我可以编写一个简短的脚本,或者删除一个shell并使用tr或类似的东西来删除,但是一个vim解决方案就是花花公子:-)

Vim有原子\p来匹配可打印的字符,但是尝试这样做 :s/[^\p]//g以匹配逆转失败并且只留下文件中的每个'p'.我已经(?!xxx)在其他问题中看到了序列,而vim似乎无法识别这个序列.我没有找到一个原子用于不可打印的字符.

在此期间,我将放弃使用外部工具,但如果任何人有任何伎俩来做这件事,那将是受欢迎的:-)

TA!

too*_*php 10

不幸的是你不能放入\p角色类,虽然这将是一个很好的功能.但是,您可以使用否定前瞻功能\@!来构建搜索:

/\p\@!.
Run Code Online (Sandbox Code Playgroud)

这将首先确保.只有在不是\p角色时才能匹配.