Groovy删除多行注释

时间:2012-06-08 19:20:00

标签: regex groovy comments multiline replaceall

如何使用groovy删除多行注释?

/* Use groovy replaceAll regex to 
   remove this comment */

我将上述文本从文件读入文件对象,然后将其转换为字符串。如果评论跨越一行,我可以使用下面发布的replaceAll方法将其删除:

def file = new File('myfile')
def fileString = file.getText()

println fileString.replaceAll('/\\* .* \\*/','')

我曾尝试使用(?m)标志,但我无法识别我的模式。我尝试过以下陈述,但都无法与我的模式相匹配。

fileString.replaceAll('(?m)/\\* (.*) \\*/'    ,'')  #multiline switch
fileString.replaceAll('(/\\*)(.|\n\r)*(\\*/)' ,'')  #match all .* (include \n\r)

我考虑过使用DotAll,最后是(\ s)和$ {}。但是,我不确定如何有效地将它混合到正则表达式中。任何帮助都会受到欢迎。谢谢。

2 个答案:

答案 0 :(得分:7)

试试这个表达式:

'(?s)/\\*.*?\\*/'

(?m)没有.匹配新行,(?s)会这样做。

答案 1 :(得分:0)

喜欢

/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/

为正则表达式部分工作吗?

(来自http://ostermiller.org/findcomment.html