可能重复:
可以使用正则表达式来匹配嵌套模式吗?
我正在编写一个regexp来检查输入字符串是否是正确的算术表达式.问题是检查是否有足够的开括号和右括号.
表达式:
(1)
(((1)
((1))))
我认为前瞻和后视在这里很有用但是现在我只能检查一种.我正在使用Java,如果重要的话.
您不应该使用正则表达式来执行此操作.相反,您可以逐个字符地迭代字符串并跟踪嵌套级别.
最初嵌套为0.当您看到(
嵌套增加1时,以及当您看到)
减少嵌套时.如果最终嵌套为0并且嵌套永远不会低于0,则表达式会正确平衡.
public static boolean checkParentheses(String s) {
int nesting = 0;
for (int i = 0; i < s.length(); ++i)
{
char c = s.charAt(i);
switch (c) {
case '(':
nesting++;
break;
case ')':
nesting--;
if (nesting < 0) {
return false;
}
break;
}
}
return nesting == 0;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10096 次 |
最近记录: |