java 用于匹配多行嵌套注释的正则表达式

java regex for matching multiline nested annotation

我正在尝试编写一个 java 正则表达式来从我的代码中删除所有注释,我有一些非常复杂的嵌套注释,到目前为止我只能匹配内部注释,在这里是我注释的一个例子

@annotationA(property1 = "",
        property2 = "",
        property3 = "",
        property4 = "",
        property5 = "")
public class ClassA {

    @annotationB(property1 = @annotationA(property5 = "anyChar",
            property6 = false,
            property1 = "anyChar",
            property2 = "anyChar",
            property3 = "anyChar",
            property4 = "anyChar"),
            params = { @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")),
                    @annotationC(property7 = @annotationA(property5 = "anyChar"), property8 = @annotationA(property5 = "anyChar")), },
            returnType = @annotationA(property5 = "anyChar"))
    //some methode

}

这是我的正则表达式(未转义):

@\w+\([\n\w\s=\-"\@,.*:// {\+ }\.;+]+\)

如果您尝试删除注释,并且您有一个可以找到非嵌套注释的正则表达式,那么您基本上就完成了。除非它是一项对性能敏感的任务,否则您可以一遍又一遍地迭代该正则表达式,每次删除它匹配的内容。删除内部注释后,将不再需要处理嵌套注释。当正则表达式无法匹配任何内容时结束进程,您就完成了!

您的示例(在 Notepad++ 中)用了 3 个 replaceAlls 来完全清理,看起来可以接受。