RegEx删除评论

时间:2015-03-30 21:10:03

标签: regex groovy

问题是 - 我需要删除文件中的所有注释(java代码),所以像//this

这样的所有内容
/*  Multiline  */ 

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

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

但只从字符串中删除了一行注释。 https://regex101.com/表明我需要的所有东西都匹配,你能指出一个问题吗?

2 个答案:

答案 0 :(得分:1)

您必须打开DOTALL模式,以便在Java / Groovy正则表达式中将\n.匹配。可以通过在模式中嵌入(?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'

答案 1 :(得分:0)

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

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

Working demo on Regex101