我有一些帶有代碼的文本文件。用於以編程方式刪除所有評論的Java正則表達式
/*Comment here*/
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("First");
/*Comment here
*and
*here*/
primaryStage.setScene(new Scene(root, 640, 480));
primaryStage.show();//Comment this
//and comment that
}
,使它看起來像這樣:
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("First");
primaryStage.setScene(new Scene(root, 640, 480));
primaryStage.show();
}
我已經試過這樣:
public String delComments(String content){
Pattern regex = Pattern.compile("/\\*.*?\\*/|/{2,}[^\\n]*", Pattern.MULTILINE);
Matcher matcher = regex.matcher(content);
String clean = content.replaceAll("(?s:/\\*.*?\\*/)|//.*", "");
return clean;
}
方法讀取文件,並替換所有
public void delCommentAction(ActionEvent actionEvent) throws IOException {
String line = null;
FileReader fileReader =
new FileReader(filePath);
BufferedReader bufferedReader =
new BufferedReader(fileReader);
FileWriter fw = new FileWriter(filePathNoComm);
BufferedWriter bw = new BufferedWriter(fw);
while((line = bufferedReader.readLine()) != null) {
bw.write(delComments(line));
}
bw.close();
}
但它不起作用(評論未被刪除)
我認爲這對於單個正則表達式來說非常重要。您應該嘗試使用propper解析器解析代碼並使用它查找註釋。 – SomeJavaGuy
你可以試試['「//.*[\r\n]*|((#"[^\\\\\\"]*(?:\\\\.[[\\\\\\\\\\\\] )* \ 「?)|/\\ * [^ *] * \\ * +(:[^/*] [^ *] * \\ * +)* /」'](https://regex101.com/R/yU4aU5/1)。 –