求Notepad++正则表达式:移除string1_,保留指定例外字符串
解决Notepad++正则移除指定前缀的问题
我帮你梳理下精准解决这个需求的步骤,亲测在Notepad++里完全符合你的预期:
操作步骤
- 打开Notepad++并加载你的目标文本
- 按下
Ctrl+H打开「替换」对话框 - 在「查找模式」区域勾选「正则表达式」,不要勾选「.匹配换行符」
- 在「查找内容」输入框中粘贴以下正则表达式:
\b(?!know|can)[^_]*_ - 「替换为」输入框留空(什么都不填)
- 点击「全部替换」按钮,完成处理
正则表达式详解
咱们拆解下这个正则为什么能满足你的需求:
\b:匹配单词边界,避免误匹配包含know/can的更长前缀(比如unknown_不会被误判为需要保留的know_)(?!know|can):负向先行断言,核心逻辑——只要前缀是以know或can开头的,就跳过不匹配,确保这些前缀被完整保留[^_]*:匹配任意数量的非下划线字符(包括空格、特殊符号、尖括号等,完美适配你例子里<TYP 1>这类带空格的前缀)_:匹配前缀末尾的下划线,这部分会和前面的前缀一起被替换为空,只留下下划线后面的内容
扩展说明
如果之后需要保留更多前缀(比如could、should),只需要在断言里新增即可,比如修改为:
\b(?!know|can|could)[^_]*_
内容的提问来源于stack exchange,提问作者prihantoro prihantoro
相关产品推荐
相关产品推荐

