正则表达式通过忽略其他括号来查找两个打开和关闭括号之间的文本

时间:2014-11-27 17:34:23

标签: python regex perl

method void run() {
        var char key;
        var boolean exit;

        let exit = key;

        while (exit) {
            // waits for a key to be pressed.
            while (key) {
                let key = key;
                do moveSquare();
            }

            if (key) {
                let exit = exit;
            }
            if (key) {
                do square.decSize();
            }


            // waits for the key to be released.
            while (key) {
                let key = key;
                do moveSquare();
            }
        }

        return;
 }

我希望有一个正则表达式来捕获第一个while循环的整个主体(使用其他while和if语句)。我试过:\ while \ s *(。+)\ s * {(。+?)} \但排除了while的结束括号。只考虑遇到的第一个问题。

2 个答案:

答案 0 :(得分:1)

正则表达式无法处理嵌套的递归结构。对于那些人,你需要更强大的东西。

在这些简单的“我只是想提取一个子字符串”案例中,我经常会对Text::Balanced及其extract_bracketed函数感到好运。

对于想要实际递归解析器的更大案例,我为此目的构建了Parser::MGC

其中任何一个都应该可以。

答案 1 :(得分:-1)

你也可以尝试这个:

/^(\s*)while.*{[^]*\1}/igm

你可以尝试here