regex 在vscode中,我应该使用什么正则表达式来将javadoc添加到java程序中?

klh5stk1  于 2023-10-22  发布在  Vscode
关注(0)|答案(2)|浏览(99)

我目前的尝试:
查找:(^$\n[\s]*.*\{|^$\n[\s]*.*@.*$)
替换:/***/$1
问题:除了javadoc样板没有缩进之外,其他都很好用。
我应该做什么样的改变来准确地表达它?
输入:

public class Main {

    class innerClass {

        int a;
        int b;

        @Override
        private int goo() {

        }
    }

    String a;

    public static void main (String[] args) {
        // blablabla
    }

    @Override
    public int foo(int a) {

    }
}

产出:

/***/
public class Main {
/***/
    class innerClass {

        int a;
        int b;
/***/
        @Override
        private int goo() {

        }
    }

    String a;
/***/
    public static void main (String[] args) {
        // blablabla
    }
/***/
    @Override
    public int foo(int a) {

    }
}

预期输出:

/***/
public class Main {
    /***/
    class innerClass {

        int a;
        int b;
        /***/
        @Override
        private int goo() {

        }
    }

    String a;
    /***/
    public static void main (String[] args) {
        // blablabla
    }
    /***/
    @Override
    public int foo(int a) {

    }
}
qmelpv7a

qmelpv7a1#

你可以试试这个正则表达式

^([\s\n]*(^\s*)[^{};]*\{)

并将其替换为

$2/***/$1

它所做的本质上是在不遇到字段的情况下找到所有{}块(语句以;结束),并将相同长度的/***/放在左花括号的同一行中,并在其之前放置/***/
您可能会看到测试用例here

cygmwpex

cygmwpex2#

除了@昊武的拦网技术非常高明之外,下面这些也很管用!
查找:(^$\n([\s]*)(.*\{$|[\s]*@.*)$)
替换:$2/***/$1

相关问题