如何使用或不使用正则表达式

时间:2015-09-23 10:47:02

标签: javascript java regex

我有以下代码段:

function test(){
   try {
   ---------------some contents-------
       }
   catch(e){
           }
}

现在,我想要第一对花括号之间的代码。输出应该是:

   try {
   ---------------some contents-------
       }
   catch(e){
           }

无论是否使用Regex,我该怎么做?我尝试使用以下正则表达式:

Pattern p = Pattern.compile("\\{([^}]*)\\}");
        Matcher m = p.matcher(s); // s contains each line of the above text
        while (m.find()) {
        System.out.println(m.group(1));
        }

但是,如果内容存在于一行或没有多行括号,它只会获取内容。

2 个答案:

答案 0 :(得分:1)

您可以搜索better

使用substrindexOf / lastIndexOf



function test(){
   try      {   /*---------------some contents-------*/    }
   catch(e) {}
}

var testStr = String(test);
testStr = testStr.substr(testStr.indexOf('{') + 1);
document.querySelector('#result').textContent =
   testStr.substr(0, testStr.lastIndexOf('}'));

<pre id="result"></pre>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试一试:

String s = "function test(){"
        + "try {"
        + "---------------some contents-------"
        + "}"
        + "catch(e){"
        + "}"
        + "}";
int bracketStartIndex = s.indexOf("{");
System.out.println("START INDEX = " + bracketStartIndex);
int bracketEndIndex = s.lastIndexOf("}");
System.out.println("END INDEX = " + bracketEndIndex);
System.out.println("OUTPUT STRING : " + s.substring(bracketStartIndex, bracketEndIndex));