RegExp删除注释
问题是-我需要从一个文件(java代码)中删除所有注释,所以像RegExp删除注释,regex,groovy,Regex,Groovy,问题是-我需要从一个文件(java代码)中删除所有注释,所以像//this或 /* Multiline */ 应删除评论。我正试图通过这样做来实现这一点 text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "") 但仅从字符串中删除一行注释。 显示我需要的所有匹配项,你能指出一个问题吗 您可以使用以下正则表达式 (\/\*.*(\n.*\n)*\*\/)|(\s*\/\/.*\n) 您必须打开DOTALL模式,以便在Java/Gro
//this
或
/* Multiline */
应删除评论。我正试图通过这样做来实现这一点
text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "")
但仅从字符串中删除一行注释。
显示我需要的所有匹配项,你能指出一个问题吗 您可以使用以下正则表达式
(\/\*.*(\n.*\n)*\*\/)|(\s*\/\/.*\n)
您必须打开
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'
如果逐行执行此操作,您将如何处理多行注释(例如docblocks)?我有一个大字符串,表示文件中的整个文本。以上代码或多或少对我有用(注释//上的\n是贪婪的)。实际问题是什么?请提供一个错误案例如何:
s=“/*”;a++;t=“*/”代码>?只要简单地替换/*
和*/
之间的所有内容,您就可以使用s=“”代码>@cfrick错误案例是,所有的块注释都被忽略,而不是被替换。啊,我的也在那里工作。这并没有给出任何结果——甚至有单行注释。正如巴特在问题的评论中所说的那样,有些极端情况使得使用regexp进行工作变得困难<代码>断言“def url=”http://example.com“.replaceAll($/(/.*)|(?s)/\*.\*/$,”)=='def url=“http:”