如何在Notepad++中用正则表达式替换行内容并保留指定片段?
解决Notepad++中《钢铁雄心II》CSV文件的逐行替换问题
你的需求很明确——要保留每行里第一个分号前的标识和第一个、第二个分号之间的英文描述,把中间冗余的STUFF部分删掉,只留下末尾的;;;;;;;;;;X。之前尝试的正则没精准定位到要保留的内容,所以没达到预期效果,我给你一个可行的方案:
正确的正则替换规则
- 打开Notepad++的替换窗口(快捷键
Ctrl+H) - 切换到「正则表达式」模式(务必勾选下方的「正则表达式」选项,不要勾选「.匹配换行符」)
- 在「Find what」中输入:
^([^;]+;[^;]+);.*?(;;;;;;;;;;X)$ - 在「Replace with」中输入:
\1;\2 - 点击「Replace All」完成批量替换
正则规则解释
^([^;]+;[^;]+):这是第一个捕获组,专门抓取你要保留的前两部分内容——[^;]+匹配第一个分号前的所有非分号字符(比如EE_START_RESEARCH),接着匹配分号,再匹配第二个分号前的所有非分号字符(比如Start researching %s.);:匹配第二个分号之后的那个分隔符,也就是冗余内容的起始位置.*?:非贪婪模式匹配任意字符,确保只会抓到冗余的STUFF部分,不会误吞末尾的;;;;;;;;;;X(;;;;;;;;;;X)$:第二个捕获组,精准抓取行尾需要保留的10个分号加X的固定格式
效果示例
原行:
EE_START_RESEARCH;Start researching %s.;STUFF;STUFF;STUFF;STUFF;STUFF;;;;;X
替换后会变成:
EE_START_RESEARCH;Start researching %s.;;;;;;;;;;X
之前你尝试的正则要么是匹配整行后重复内容,要么是没有精准划分保留区域,所以才会失败。这个规则刚好命中你需要保留的核心内容,同时剔除冗余部分,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Aletta
相关产品推荐
相关产品推荐

