替换java源代码中的所有字符串

yks3o0rb  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(367)

我试图替换java格式的源代码(使用java本身)中的每个声明字符串。从中删除字符串的源代码可能如下所示(>…<指示应匹配的内容):

package a.b;

import b.a.*;

@SomeAnnotation(>"abc"<)
public class XY extends YZ {

    String s = >"Hello \"World\""<;

    public static void main(String[] args) {
        System.out.println(>"Hello World"<);
    }
}

想象一下这些都存储在一个字符串中,可能没有换行符。我现在需要一个能找到所有这些的正则表达式。字符串中的转义引号有问题。我最好的办法是 ".*[^\]" .
它是否会检测到这些内部评论并不重要,只要它没有超出评论。

b4lqfgs4

b4lqfgs41#

如果使用bufferedlinereader读入另一个java应用程序中的源代码并检查每一行,则可以使用以下正则表达式:

(?:\>\")(([\w\s]*)(\\"(?!\<)))*(?:\"\<)

但是,当在javareplace方法中使用时,您可能希望转义所有反斜杠。
例如。:

lineAsString.replace((?:\\>\\")(([\\w\\s]*)(\\\\"(?!\\<)))*(?:\\"\\<),"youReplacementString");

可能需要额外的转义序列。另外,您可能希望在旁边的字符串中添加更多的特殊字符 \w 以及 \s .
我建议将正则表达式粘贴到正则表达式检查器中,如https://regex101.com/ 以及您的示例代码以获取更多解释。

相关问题