删除字符串中的注释?

时间:2013-12-13 09:32:16

标签: regex groovy removeall

我想删除字符串中的简单//注释。 我的字符串称为输入

def input = '''test //kommentar
              |
              |//noch einer
              |
              |und      noch //einer'''.stripMargin()

正则表达式为\s*\/\/.*$,可在此处http://regexr.com?37ks0

进行测试

在我的代码中,我有input = input.replaceAll(/\s*\/\/.*$/ , '')

但它不起作用。有人能帮助我吗?

3 个答案:

答案 0 :(得分:2)

至少,您需要确保允许$锚点与每行的结尾匹配,而不仅仅是整个字符串的结尾:

input = input.replaceAll(/(?m)\s*\/\/.*$/ , '')

但是如果//出现在带引号的字符串中会怎么样?或者在任何其他情况下,他们并不意味着“开始评论”?

答案 1 :(得分:2)

如果您想将//noch einer行保留为输出中的空白行,可以尝试:

input.replaceAll( '(?m)//.*$' , '' )

当然如果上面的行在你的输入文本中,那么所有这个正则表达式修改都会破坏输入代码,因为该行将成为input.replaceAll('(?m)

作为一般规则,这种正则表达式解析代码永远不是一个好主意

答案 2 :(得分:1)

好的,我得到了大学的答案。

如果是一行,则说明中的代码有效。 因为我有多行,我必须使用以下内容:

input = input.replaceAll(Pattern.compile(/\s*\/\/.*$/, Pattern.MULTILINE), '')