java - 正则表达式检查括号是否平衡

标签 java regex

<分区>

Possible Duplicate:
Can regular expressions be used to match nested patterns?

我正在编写一个正则表达式来检查输入字符串是否是一个正确的算术表达式。问题是检查是否有足够的左括号和右括号。

表达式:

  1. (1)

  2. (((1)

  3. ((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/

相关文章:

java - JTable 列宽仅在两次请求后更改

java - 如何有效地(不会因无效输入引发异常)解析 Java 中的整数?

java - Primefaces 数据表分页不起作用

javascript - 用于识别表单中的电话分机的正则表达式

正则表达式不允许只允许空格?

使用 Netbeans 在斯坦福 NER 上出现 Java 堆空间错误

java - 如何在 JUnit 测试用例中获取传递给 Runtime.getRuntime.exit(value) 的值

regex - 使用 grep 和 regex 检测没有 ID 属性的字段

javascript - 正则表达式似乎将一个字符串视为多个子字符串

python - 从url中提取数字