如何通过正则表达式替换所有以特定文本结尾的整行内容?
如何通过正则表达式替换所有以特定文本结尾的整行内容?
没问题!这事儿完全能搞定,你之前踩的坑我也遇过——正则里的*可不是普通编辑器里的通配符,它是用来表示「前面的元素出现0次或多次」的量词,所以直接写*AM_TESTING$当然匹配不到内容啦。
给你说个简单的解决方案,用这个正则就能精准匹配所有以AM_TESTING结尾的整行:
^.*AM_TESTING$
我给你拆解下每个部分的作用:
^:锚定一行的开头,确保我们从行首开始匹配.*:匹配任意字符(除了换行符)任意次数,也就是把行首到AM_TESTING之前的所有内容都包含进来AM_TESTING$:精准匹配结尾的目标文本,$锚定行尾,保证这行的最后就是AM_TESTING
接下来在Notepad++里操作的步骤也给你列出来:
- 按下
Ctrl+H打开替换对话框 - 勾选「正则表达式」模式(注意别勾选「.匹配换行符」选项,不然会跨行匹配)
- 在「查找内容」框里输入上面的正则
^.*AM_TESTING$ - 在「替换为」框里输入你想要的内容
XXX - 点击「全部替换」,搞定!
拿你的例子来验证的话:
- 行1「AM_TESTING」、行4「some text AM_TESTING」会被精准匹配,替换成
XXX - 行2「AM_TEST」、行3「something else」、行5「some text AM_TESTING new text」因为不符合「以AM_TESTING结尾」的条件,会原封不动保留,完全符合你想要的结果。
额外补充个小技巧:如果你的行尾可能有空格、制表符这类空白字符,又想忽略它们依旧匹配的话,可以把正则改成^.*AM_TESTING\s*$,\s*表示匹配0个或多个空白字符,这样即使行尾有空格也能正常替换啦。
备注:内容来源于stack exchange,提问作者AlainD
相关产品推荐
相关产品推荐

