【问题标题】:Regex match all inside brackets inside brackets?正则表达式匹配括号内的所有括号内?
【发布时间】:2012-12-08 09:54:11
【问题描述】:

我想找到下面的值

PROCEDURE test {
        test { }
}

来自:

test {
    PROCEDURE test {
        test { }
    }
}

我当前的正则表达式是:

PROCEDURE.*?{.*?(\}){2}

但它不匹配。有谁知道我该如何做到这一点?

【问题讨论】:

    标签: c# .net regex


    【解决方案1】:

    这个正则表达式怎么样:

    PROCEDURE\s+\w+\s*\{(?:.*?\{.*?\})*.*?\}
    

    它匹配成对的 {}。

    但是,如果该过程包含包含大括号的字符串或 cmets,它将失败。

    【讨论】:

      【解决方案2】:

      您需要在first {last } 之间匹配成对的{}

      你可以试试这个正则表达式:-

      PROCEDURE[^{]*[{](?:[^{]*[{][^}]*[}])*[^}]*[}]
      

      我在字符类中包含了大括号,这样你就不需要转义它们了,还有[^{]*,你不需要reluctant匹配,因为它会在第一个{处自动停止.

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2016-08-22
        相关资源
        最近更新 更多