String regex = "(//.*)|(/\\*[\\s\\S]*?\\*/)"; String result = str.replaceAll(regex, ""); System.out.println(result);
时间: 2023-10-28 16:06:27 浏览: 119
这段代码是用来删除 Java 代码中的注释的。其中,regex 是一个正则表达式,用来匹配 Java 代码中的单行注释和多行注释。具体来说,它可以匹配以下两种情况:
1. 单行注释:以双斜杠 // 开头的一行文本。
2. 多行注释:以 /* 开头,以 */ 结尾的一段文本(中间可能包含其他字符,包括换行符)。
str.replaceAll(regex, "") 的作用是,将字符串 str 中匹配到的注释部分用空字符串替换,从而删除注释。最终结果存储在 result 变量中,并输出到控制台。
相关问题
补全代码:nalysisResult.javaimport java.io.*;import java.util.*;public class AnalysisResult { public static void main(String args[]) { //使用循环按行读取文件 //调用Fenxi.getTotalScore()获取解析出的总成绩,并写入scoreAnalysis.txt中 }}Fenxi.javaimport java.util.*;public class Fenxi { public static double getTotalScore(String s) { String regex="[^0123456789]" ; //匹配非数字的正则表达式 String digitMess=s.replaceAll(regex,"*"); StringTokenizer fenxi = new StringTokenizer(digitMess,"*"); double totalScore=0; while(fenxi.hasMoreTokens()){ double score = Double.parseDouble(fenxi.nextToken()); //累加 totalScore } return totalScore; }}
import java.io.*;
import java.util.*;
public class AnalysisResult {
public static void main(String args[]) {
try {
File file = new File("score.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
double totalScore = 0;
while ((line = bufferedReader.readLine()) != null) {
totalScore += Fenxi.getTotalScore(line);
}
bufferedReader.close();
FileWriter fileWriter = new FileWriter("scoreAnalysis.txt");
fileWriter.write("总成绩:" + totalScore);
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.util.*;
public class Fenxi {
public static double getTotalScore(String s) {
String regex = "[^0123456789]";
String digitMess = s.replaceAll(regex, "*");
StringTokenizer fenxi = new StringTokenizer(digitMess, "*");
double totalScore = 0;
while (fenxi.hasMoreTokens()) {
double score = Double.parseDouble(fenxi.nextToken());
totalScore += score;
}
return totalScore;
}
}
string pat = left + "(.*?)" + right; pat = "(?:" + left + ")" + "(.*?)" + "(?:" + right + ")"; Regex regex = new Regex(pat); Match match = regex.Match(str); Console.WriteLine("结果:" + match.Value.Trim());为什么输出的匹配的字符串还是包括了left与right
根据你提供的代码,我可以看出这是一个正则表达式的匹配过程。其中,left和right是两个特定的字符串,用来表示匹配的左右边界。
在这个正则表达式中,我们使用了非捕获组 `(?:)` 将 left 和 right 包裹起来,以确保它们不会被匹配出来。但是,即使这样,匹配的结果中仍然会包含 left 和 right,这是因为我们在匹配过程中使用了 `.*?`,这个通配符会匹配任意字符,包括 left 和 right。
想要去掉结果中的 left 和 right,可以使用正则表达式的替换功能,将结果中的 left 和 right 替换为空字符串即可。例如:
```
string result = Regex.Replace(match.Value.Trim(), pat, "");
Console.WriteLine("结果:" + result);
```
阅读全文