JAVA正则如何使用正则匹配 “--” 和 “/**/”两种类型的注释语句,并排除字符串或字符常量的情况
时间: 2024-03-28 09:41:24 浏览: 53
你可以使用以下的正则表达式来匹配这两种类型的注释语句,并排除字符串或字符常量的情况:
`(?<!['"\s])(\/\*[\s\S]*?\*\/|--.*)`
这个正则表达式的含义是:
- `(?<!['"\s])`:负向前瞻,匹配前面不是单引号、双引号或空格的位置。
- `(\/\*[\s\S]*?\*\/|--.*)`:匹配注释语句,包括多行注释和单行注释。
- `\/\*[\s\S]*?\*\/`:匹配多行注释。
- `--.*`:匹配单行注释。
你可以将这个正则表达式编译成一个 Pattern 对象,并使用 Matcher 来查找字符串中的注释语句。示例代码如下:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String str = "/* This is a\n multi-line comment */\n" +
"int a = 1; // This is a single-line comment\n" +
"String str = \"/* This is not a comment */\";";
Pattern pattern = Pattern.compile("(?<!['\"\\s])(\\/\\*[\\s\\S]*?\\*\\/|--.*)");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
```
输出结果为:
```
/* This is a
multi-line comment */
// This is a single-line comment
```
阅读全文