我想删除字符串中的简单//注释。 我的字符串称为输入
def input = '''test //kommentar
|
|//noch einer
|
|und noch //einer'''.stripMargin()
正则表达式为\s*\/\/.*$
,可在此处http://regexr.com?37ks0
在我的代码中,我有input = input.replaceAll(/\s*\/\/.*$/ , '')
但它不起作用。有人能帮助我吗?
答案 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), '')