正则表达式选择函数内部

时间:2018-01-09 08:46:01

标签: regex

这里是我的代码现在如何选择x函数括号与正则表达式之间的代码?

 public void x() {
                if (a== null) {
               return;}

               String s = "abc";
               try {
           if (b==1 ) {
            c= null;
               } else {
               d=null;       
               } } catch (Exception e) {
               System.out.println(e);
                    }
                  }

结果应该是

 if (a== null) {
         return;}

      String s = "abc";
       try {
       if (b==1 ) {
     c= null;
       } else {
       d=null;       
       } } catch (Exception e) {
  System.out.println(e); }

1 个答案:

答案 0 :(得分:-3)

使用递归正则表达式(?R)(?0)引用整个正则表达式

{([^{}]|(?R))*}

regex101

并仅在public void x()之后匹配,(?1)引用第一组。

public void x\(\) \K({([^{}]|(?1))*})

regex101

以下评论处理双引号字符串

中的大括号
{([^{}]|(?R))*}

变为

{(?:"(?:\\.|[^"])*"|[^{}]|(?R))*}

并处理评论

{(?:\/(?:\/.*|\*(?:(?!\*\/)[\s\S])*\*\/)|"(?:\\.|[^"])*"|[^{}]|(?R))*}

对于单引号也类似于双引号会起作用,但先决条件是输入是有效的C因为可以匹配无效的序列C,如'ab'

{(?:\/(?:\/.*|\*(?:(?!\*\/)[\s\S])*\*\/)|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"|[^{}]|(?R))*}