2

如何使用 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) 和 ${}。但是,我不确定如何有效地将它混合到正则表达式中。欢迎任何帮助。谢谢。

4

2 回答 2

7

试试这个表达式:

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

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

于 2012-06-08T19:30:39.563 回答
0

做类似的事情

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

为正则表达式工作?

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

于 2012-06-08T19:27:15.417 回答