<分区>
Possible Duplicate:
Can regular expressions be used to match nested patterns?
我正在编写一个正则表达式来检查输入字符串是否是一个正确的算术表达式。问题是检查是否有足够的左括号和右括号。
表达式:
(1)
(((1)
((1))))
我认为前瞻和后视在这里很有用,但现在我只能检查一种。如果重要的话,我正在使用 Java。
<分区>
Possible Duplicate:
Can regular expressions be used to match nested patterns?
我正在编写一个正则表达式来检查输入字符串是否是一个正确的算术表达式。问题是检查是否有足够的左括号和右括号。
表达式:
(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;
}
关于java - 正则表达式检查括号是否平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918681/