[转]用正则表达式快速删除代码中的注释
------------------------------deepseek给出的解决方案,亲测有效--------------------------
在 IntelliJ IDEA 中通过正则表达式删除 Java 注释并排除字符串内容(即不删除 `"..."` 中的内容),可以使用以下正则表达式:
---
### **正则表达式**
```regex
("(?:\\\\.|[^"\\])*")|//.*|/\*[\s\S]*?\*/
```
#### **替换为**
```regex
$1
```
---
### **操作步骤**
1. **打开替换窗口**:
- 快捷键 `Ctrl + R`(Windows)或 `Cmd + R`(Mac)。
- 勾选 **Regex**(正则表达式模式)。
2. **输入正则表达式**:
- **查找**:`("(?:\\\\.|[^"\\])*")|//.*|/\*[\s\S]*?\*/`
- **替换为**:`$1`
3. **执行替换**:
- 点击 **Replace All**(全局替换)。
---
### **正则解释**
| 部分 | 说明 |
|---------------------|---------------------------------------------------------------------------------------|
| `("(?:\\\\.|[^"\\])*")` | 匹配双引号字符串(支持内部转义符如 `\"`),并捕获到分组 `$1`,替换时保留该分组。 |
| `//.*` | 匹配单行注释 `//` 到行尾。 |
| `/\*[\s\S]*?\*/` | 匹配多行注释 `/* ... */`(包括换行符)。 |
---
### **示例**
#### 替换前代码
```java
public class Demo {
// 单行注释
String url = "http://example.com"; // 注释
/* 多行注释
包含 http:// 和 https:// */
String text = "/* 这不是注释 */";
}
```
#### 替换后代码
```java
public class Demo {
String url = "http://example.com";
String text = "/* 这不是注释 */";
}
```
---
### **注意事项**
1. **字符串中的转义符**:
- 正则已支持字符串内的转义符(如 `\"` 或 `\\`),确保不会误删字符串内容。
2. **字符常量**:
- 如果需要排除单引号字符常量(如 `'//'`),可将正则扩展为:
```regex
("(?:\\\\.|[^"\\])*"|'(?:\\\\.|[^'\\])*')|//.*|/\*[\s\S]*?\*/
```
- 替换逻辑不变(仍用 `$1`)。
---
### **验证**
在 IDEA 中使用 **Find** 功能预览匹配结果(`Ctrl + F`),确保:
- 所有注释被高亮。
- 字符串内容(如 `"http://..."` 或 `"/* ... */"`)未被匹配。
此方法可安全删除注释,同时保留字符串内容。
-------------以下方案有bug,有可能删除Java字符串中含有//的行,导致代码出错---------------------
原文地址:https://www.cnblogs.com/xingshansi/p/7353367.html
思路:把注释都替换为为空,这样就解决了删除注释的目的。
这里我们需要用到正则表达式 在options 中选择Regular expression 。在上面方框填入正则表达式
删除 java 注释 /* */:/\*{1,2}[\s\S]*?\*/
删除 java 注释 //://[\s\S]*?\n
删除xml注释:<!-[\s\S]*?-->
删除空白行:^\s*\n
\/\*[\s\S]*\*\/|\/\/.*