如何在Notepad++中使用正则表达式提取指定字符串部分并删除多余内容
如何在Notepad++中使用正则表达式提取指定字符串部分并删除多余内容
嗨,我看你已经在尝试用正则解决这个问题了,思路是对的!不过目前你用的^.*(?=..(CAD))只适配了第一个带CAD的行,没法处理其他没有CAD的行,咱们来调整成通用的方法,轻松搞定所有行:
先明确需求:
你需要把每行中.(版本号)的部分删除,只保留前面的Collection-ID.Package-name:
原内容示例:
DGL1PLAN_PUT_PFC.FCA#FKS.(CAD17_2013-01-30-21.35.29) DSN8CC91.DSN8CLTC.(2015-01-14-16.33.06.616783) DSNAOCLI.DSNCLICS.(UQ40167) DSNJAR.DSNX9DIJ.(UK81051)
目标内容:
DGL1PLAN_PUT_PFC.FCA#FKS DSN8CC91.DSN8CLTC DSNAOCLI.DSNCLICS DSNJAR.DSNX9DIJ
具体操作步骤(Notepad++中):
- 打开你的目标文件,按下
Ctrl+H打开替换对话框。 - 在「查找模式」里选择「正则表达式」(默认的「普通」模式要换掉)。
- 在「查找内容」输入框中填入:
\.\(.*\)$
给你拆解下这个正则的含义:\.:匹配实际的点号(正则里.是通配符,必须加反斜杠转义才能匹配真实的点)\(:匹配实际的左括号(同理,括号在正则里有特殊含义,需要转义).*:匹配括号里的所有内容(不管版本号是日期、代码还是其他格式)$:匹配行的结尾,确保我们只删除每行最末尾的这个.(版本号)部分
- 在「替换为」输入框里留空(什么都不用写)。
- 点击「全部替换」,所有行的多余部分就会被一次性删除啦!
另一种可选的捕获组方式:
如果你更习惯用捕获想要保留内容的思路,也可以这么操作:
- 查找内容填:
^(.+)\.\(.*\)$ - 替换为填:
\1
这个正则是把每行开头到.(之前的所有内容捕获到第1组,然后替换的时候只保留这个组的内容,效果和上面完全一样。
备注:内容来源于stack exchange,提问作者Grant Hood
相关产品推荐
相关产品推荐

