Java 正则表达式 : How to remove substrings encased in specific delimiters

标签 java regex comments matching

我正在编写一个词法分析器,我想在其中删除注释,例如:

/* this is a block comment that can
   span across multiple lines */
// this a line comment that can only span one line

我已经尝试过 /\*.*\*/与 block 注释匹配。问题是 RegEx 的第一个匹配似乎总是最长的。如果我在同一代码中有多个 block 注释,它将匹配从第一个 block 注释的开头到最后一个 block 注释的结尾的子字符串。这是我想解决的一个问题。我假设我可以(在 .* 之后)添加一些内容来检查是否存在 */在评论本身。但是,我不知道如何告诉 RegEx (Java) 不匹配子字符串中的特定单词。

如何编辑/\*.*\*/停止 String.replaceAll() 跨多个注释匹配? (我可以对 //\n 的行注释使用相同的解决方案)

最佳答案

您想让匹配非贪婪? 符号的作用是:

/\*.*?\*/

* 之后的 ? 告诉搜索查找使模式与文本匹配的最小字符数。

关于Java 正则表达式 : How to remove substrings encased in specific delimiters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39026940/

相关文章:

java - 如何在 Swagger 中描述多态端点?

Java Dateformat——我可以将输入与某些格式进行比较并根据匹配的格式解析输入吗?

c# - 突然出现无法忍受的写一些评论的欲望,是糟糕设计的征兆吗?

java - 为什么 hibernate 只创建第一个表?

java - 如何捕获弹出窗口上显示的数据

python - 正则表达式从 Python 中的 MMD 元数据中提取 #hashtags

regex - 需要帮助重写规则以使 url 干净且 seo 友好?

regex - shell 正则表达式 : Extract prices

comments - 如何从 facebook 中的 url 获取所有评论?

java - 在 Java 中从 JSON 中删除注释的最快方法?