首页 > 解决方案 > 使用正则表达式解析括号之间的信息

问题描述

我正在尝试使用正则表达式解析信息,它的布局类似于 json。我这样做的部分问题涉及识别大括号对。

group = {
    field = element
    innergroup = {
        field = element
        field = element
    }
    field = element
    innergroup = { field = element }
}

array = { field = element }

解决这个问题的第一步是识别内部组,括号内没有大括号的材料。在上面的例子中:

innergroup = {
    field = element
    field = element
}
#and
innergroup = { field = element }
#and
array = { field = element }

我试图通过使用一些不同的正则表达式命令来找到这些内部组。这是我得到的最接近的。

\{.*?\}

我知道这与“。”这一事实有关。字符表示除换行符之外的所有字符。我还必须想出一种方法来排除任何一个大括号中的字符。

[更新]

以前的问题已经询问了当大括号都在一行时如何执行此操作。然而,这并没有解决这个内部群体。

innergroup = {
    field = element
    field = element
}

其他问题也没有考虑到有很多大括号的事实,因此其他正则表达式函数会找到类似的东西。

group = {
    field = element
    innergroup = {
        field = element
        field = element
    }

任何帮助表示赞赏。谢谢。

标签: regex

解决方案


使用否定字符类:

\{[^{}]*?\}

[^{}]表示“除大括号外的任何字符”(不需要转义)。

现场演示


推荐阅读