问题是 - 我需要删除文件中的所有注释(java代码),所以像//this
或
/* Multiline */
评论应该删除。我试图通过这样做来实现这个目标
text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "")
但只从字符串中删除了一行注释。 https://regex101.com/表明我需要的所有东西都匹配,你能指出一个问题吗?
答案 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)