当前位置: 首页 > 知识库问答 >
问题:

Java:使用Regex从块注释中删除斜杠和星星

施昊然
2023-03-14

我正在做一个个人项目,我需要从这样的输入字符串中提取实际的注释。

案例1:/*一些有用的文本*/

输出:一些有用的文本

案例2:/***这是一种格式令人讨厌的格式**/

输出:这是令人讨厌的格式化

案例3:

    /**

    More useful
information

    */

输出:更多有用信息

案例4:

/**
Prompt the user to type in 
the number. Assign the number to v
*/

输出:提示用户输入数字。将号码分配给v

我在Java工作,我试图替换/**/使用简单的方法,如String.replace,但由于注释可以以不同的方式格式化如上所述,替换方法似乎不是实现此目的的可行方法。如何使用正则表达式实现上述输出?

这是我正在使用的测试注释文件。

共有2个答案

罗甫
2023-03-14

您可以使用以下正则表达式:

String newString = oldString.replaceAll("/\\*+\\s*|\\s*\\*+/", "");

编辑

为了消除换行符,您可以执行以下操作:

String regex = "/\\*+\\s*|\\s*\\*+/|[\r\n]+";
String newString = oldString.replaceAll(regex, "");
卢子民
2023-03-14

尝试以下方法:

"/\\*+\\s*(.*?)\\*+/"

dot还应与新行匹配:

Pattern p = Pattern.compile("/\\*+\\s*(.*?)\\*+/", Pattern.DOTALL);

编辑

 Pattern p = Pattern.compile("/\\*+\\s*(.*?)\\*+/", Pattern.DOTALL); 
 Matcher m = p.matcher("/*** This is formatted obnoxiously**/");
 m.find();
 String sanitizedComment = m.group(1); 
 System.out.println(sanitizedComment);
 类似资料:
  • 问题内容: 我不明白为什么下面的代码不按预期运行 预期产量: 实际输出: 我是否需要转义正斜线?我不这么认为,但是我也尝试了以下尝试……没有用 最后,我意识到我不需要正则表达式,我可以只使用以下内容,而不会创建正则表达式 但是,我仍然想了解为什么我的第一个示例不起作用。 问题答案: 问题实际上是您需要在替换字符串中双转义 反斜杠 。您会看到,(我确定您知道)表示替换字符串是,并且(您可能不知道)替

  • 有没有办法从一个巨大的xml文件中删除注释( 两者,根元素前的注释 和内的注释 最好的解决方案是使用xPath。我试过了 它适用于DOM,但不适用于vtd xml 这是我选择评论的代码 但此处的屏幕上打印的是nothing。 有没有办法用vtd xml做到这一点? 谢谢你的帮助。

  • 问题内容: 这不起作用: 这也没有: 这也没有: 是否可以在代码中将注释分成多行? 问题答案: 那样做: 实际上,根据PEP8,当将某物分成多行时,括号比斜杠更可取: 换行的首选方法是在括号,方括号和花括号内使用Python的隐含行连续性。通过将表达式包装在括号中,可以将长行分成多行。应优先使用这些,而不是使用反斜杠进行行连续。 在您的情况下,它还允许发表评论。 这是一个有效的证明:http :

  • 本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下

  • 问题内容: 从JavaScript或jQuery中的JSON数据中删除反斜杠 但这对我不起作用。有什么帮助吗? 问题答案: 您的字符串无效,但是假设它是有效的,则必须执行以下操作: 当您想用替换所有出现时,第一个参数必须是一个正则表达式,如果您提供一个字符串,则仅第一个出现将被替换,这就是您的替换无法正常工作的原因。 干杯