【IDEA】删除/替换文件中所有包含某个字符串的行
目录
前言
正则表达式
示例
使用方法
前言
在日常开发中,频繁地删除无用代码或清理空行是不可避免的操作。许多开发者希望找到一种高效的方式,避免手动选中代码再删除的繁琐过程。
使用正则表达式是处理字符串的一个非常有效的方法。
正则表达式
在正则表达式中,点号. 代表 “匹配除换行符之外的任意单个字符” 。比如字符a、数字1、符号#等,只要不是换行符,都能被.匹配。
星号* 是一个量词,表示 “前面的元素出现零次或多次” 。它必须和前面的字符、字符组或子表达式搭配使用。例如在a*中,就表示a这个字符可以不出现,也可以出现任意多次(1 次、2 次、n 次 )。
示例
假设现在我们的原代码如下,
import com.miui.cloudservice.cloudNewCase.CloudService_C10003694081_Test;
public class MyTest {private void testMethod() {CloudService_C10003694081_Test.run();}
}
我们想要在 IntelliJ IDEA 中删除所有包含字符串cloudNewCase
的行。想要替换后的结果如下。
public class MyTest {private void testMethod() {CloudService_C10003694081_Test.run();}
}
那么,我们可以使用以下正则表达式,
^.*cloudNewCase.*$
- .* 表示匹配除换行符之外的任意长度的任意字符序列。也就是说,不管是空白字符、字母、数字还是符号组成的一段内容,它都能匹配。比如空字符串"" 、"hello" 、"123abc!@#" 等,都满足.* 的匹配规则。
- 精确匹配字符串cloudNewCase ,要求字符完全一致,包括字母的大小写。只有当文本中出现cloudNewCase 这一完整的、大小写也完全相同的字符串时,才能满足这部分的匹配。
- 第二个.* 和前面的.* 作用一样,继续匹配除换行符之外的任意长度的任意字符序列。
因此,.*cloudNewCase.* 这个正则表达式整体的意思是:匹配任意包含字符串cloudNewCase 的文本内容。它不关心cloudNewCase 之前和之后是什么字符,只要文本里有cloudNewCase 这个字符串就可以匹配上。例如"abccloudNewCasedef" 、"cloudNewCase" 、"123cloudNewCase456" 等文本都能被该正则表达式匹配。
使用方法
在IDEA中,打开一个文件,通过快捷键:Ctrl + R 或 ⌘ + R打开该文件的Replace对话框,然后勾选Regex(正则表达式)选项。
在Find字段中输入:^.*cloudNewCase.*$。Replace字段留空(直接删除整行)。
最后,点击Replace All或Replace逐个处理。