Javascript 如何在使用或不使用正则表达式的情况下获取两个大括号之间的所有内容
我有以下代码段:Javascript 如何在使用或不使用正则表达式的情况下获取两个大括号之间的所有内容,javascript,java,regex,Javascript,Java,Regex,我有以下代码段: function test(){ try { ---------------some contents------- } catch(e){ } } try { ---------------some contents------- } catch(e){ } 现在,我想要第一对花括号之间的代码。输出应如下所示: function test(){ try {
function test(){
try {
---------------some contents-------
}
catch(e){
}
}
try {
---------------some contents-------
}
catch(e){
}
现在,我想要第一对花括号之间的代码。输出应如下所示:
function test(){
try {
---------------some contents-------
}
catch(e){
}
}
try {
---------------some contents-------
}
catch(e){
}
我如何在使用或不使用正则表达式的情况下做到这一点?我尝试使用以下正则表达式:
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));
}
但是,它只在其位于一行或不存在多行大括号的情况下获取内容。您可以进行搜索
使用substr
和indexOf
/lastIndexOf
:
功能测试(){
请尝试{/*----一些内容------*/}
捕获(e){}
}
var testStr=字符串(测试);
testStr=testStr.substr(testStr.indexOf('{')+1);
document.querySelector(“#result”).textContent=
testStr.substr(0,testStr.lastIndexOf('}')代码>
试试看:
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));
对但是我没有得到任何合适的解决方案。你能告诉我们你到目前为止尝试了什么吗?这应该是Java还是Javascript?事实上:您在谷歌上搜索并尝试了一些正则表达式,但找不到解决方案?Pattern p=Pattern.compile(“\{([^}]*)\}”);匹配器m=匹配器p;虽然(m.find()){System.out.println(m.group(1));}我尝试使用上述代码段。在正则表达式中,您排除了字符类中的右大括号([^}]*
)。由于要匹配第一个开口和最后一个闭合大括号之间的所有内容,只需使用*
。但是,由于您的测试文本似乎是代码,我假设您希望匹配任意对大括号。在这种情况下,使用解析器而不是正则表达式,因为正则表达式并不适合编写代码。