java如何替换模式。使用字符串完成所有操作。替换所有函数?
我正在创建一个简单的项目,它是一个简单的IDE
我正在IDE中检测源代码(长字符串)的注释并将其删除
我尝试了许多正则表达式来检测注释,这个正则表达式对我检测注释的效果最为一致:
Pattern commentsSingle = Pattern.compile("\\/\\/.*");
Pattern commentsMulti = Pattern.compile("\\/\\*.*?\\*\\/", Pattern.DOTALL);
我想修改此注释检测,以便能够使用String.replaceAll
方法删除注释
我可以通过以下方式轻松完成单行评论:
code = code.replaceAll("\\/\\/.*", "");
但是,多行注释有一个Pattern.DOTALL
,因此我无法使用该字符串。正确回复所有方法
有人能帮我修改正则表达式或调用另一个方法,这样我就可以正确地替换多行注释了吗
我尝试过的一些正则表达式:
("(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)",""))
上述正则表达式有时会导致stackoverflow异常
# 1 楼答案
您可以使用来自^{} 的^{} ,而不是
String.replaceAll
,然后可以使用Pattern.DOTALL
构建模式:看起来像这样:
下面是一个例子:
将在替换之前打印此内容:
在替换之后: