如何使用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)和$ {}。但是,我不确定如何有效地将它混合到正则表达式中。任何帮助都会受到欢迎。谢谢。
答案 0 :(得分:7)
试试这个表达式:
'(?s)/\\*.*?\\*/'
(?m)
没有.
匹配新行,(?s)
会这样做。
答案 1 :(得分:0)
喜欢
/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/
为正则表达式部分工作吗?