删除评论的正则表达式
RegExp to delete comments
问题是 - 我需要从文件中删除所有评论(java 代码),所以 //this
或
之类的所有内容
/* Multiline */
应删除评论。我正试图通过这样做来实现这一目标
text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "")
但仅从字符串中删除了一行注释。
https://regex101.com/ 显示我需要的一切都匹配,你能指出一个问题吗?
您可以使用以下正则表达式
(\/\*.*(\n.*\n)*\*\/)|(\s*\/\/.*\n)
您必须打开 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'
问题是 - 我需要从文件中删除所有评论(java 代码),所以 //this
或
/* Multiline */
应删除评论。我正试图通过这样做来实现这一目标
text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "")
但仅从字符串中删除了一行注释。 https://regex101.com/ 显示我需要的一切都匹配,你能指出一个问题吗?
您可以使用以下正则表达式
(\/\*.*(\n.*\n)*\*\/)|(\s*\/\/.*\n)
您必须打开 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'