- 论坛徽章:
- 0
|
关于用正则表达式中括号的匹配问题?
谢谢各位帮忙
实际上我要在这里做循环处理,最终每一个INCLXX()是我要算的一个表达式,里面有可能又嵌套了一个这样的表达式,每次我需要找到一个该表达式所对应的最大范围,然后判断里面是否还有这样的表达式,如果存在需要递归处理,我需要用JAVA来实现这样的功能,我自己也写了一个方法能够实现这样的功能,通过判断左右括号的个数是否相等来找到最大范围,但我想知道这样的功能正则表达式能否实现。
以下是我用JAVA实现的方法:
其中pattern定义为
private static final String NESTING_FORMULA_PATTERN = "INCL\\d{2}";
public String getFormulaExpression(String expression) {
Pattern pattern = Pattern.compile(NESTING_FORMULA_PATTERN);
Matcher matcher = pattern.matcher(expression);
String formulaExpression = null;
if (matcher.find()) {
int beginIdx = expression.indexOf('(', matcher.end());
int endIdx = expression.length();
int left = 0;
int right = 0;
for (int i = beginIdx; i < endIdx; i++) {
if (expression.charAt(i) == '(') left++;
else if (expression.charAt(i) == ')') right++;
if (left == right) {
endIdx = i;
break;
}
}
formulaExpression = expression.substring(beginIdx + 1, endIdx);
}
return formulaExpression;
} |
|