我需要选择两个外括号之间的所有文本。由于不能保证正则表达式选择匹配的括号,我编写了以下代码:
public static String getContentBetweenCorresponding(String s, char left, char right) {
int pos = s.indexOf(left);
if ( pos > -1 ) {
int start = pos;
int openCount = 0;
while ( pos < s.length() ) {
char currentChar = s.charAt(pos);
if ( currentChar == right ) {
if ( openCount > 1 ) // if openCount == 1 then correct one
openCount--;
else
return s.substring(start + 1, pos);
} else if ( currentChar == left )
openCount++;
pos++;
}
}
return null;
}
有用。然而它非常慢。我怎样才能加快速度?此方法需要 5s 处理手头的字符串,是我的应用程序的瓶颈。
提前非常感谢!
编辑:我想要做的是获取匹配括号之间的文本。
getContentBetweenCorresponding("bla{{{blubb}}}}}}", '{', '}')
应该返回
"{{blubb}}"