删除评论的正则表达式

RegExp to delete comments

问题是 - 我需要从文件中删除所有评论(java 代码),所以 //this

之类的所有内容
/*  Multiline  */ 

应删除评论。我正试图通过这样做来实现这一目标

text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "")

但仅从字符串中删除了一行注释。 https://regex101.com/ 显示我需要的一切都匹配,你能指出一个问题吗?

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

(\/\*.*(\n.*\n)*\*\/)|(\s*\/\/.*\n)

Working demo on Regex101

您必须打开 DOTALL 模式才能将 \n 与 Java/Groovy 正则表达式中的 . 匹配。可以通过在模式中嵌入 (?s) 来打开它。这是一个工作示例:

def pattern = $/(//.*)|(?s)/\*.*\*//$
def singleLine = '''
    code // single line comment
    code
'''
def multiLine = '''
    code /* multi line
    comment */ code
'''
assert singleLine.replaceAll(pattern, '') == '\n    code \n    code\n'
assert multiLine.replaceAll(pattern, '') == '\n    code  code\n'