使用平衡组与配置文件中的自定义嵌套结构匹配



我的文件将字段存储在嵌套结构中,使用开始和结束关键字。例如,

BEGIN Root_Name
    var1 = 0
    var2 = "string"
    var3 = "string"
    BEGIN node1
        var = "string"
        var= 1
        BEGIN node2
            var = 1
        END
        what_about_me = "??"
    END
END

我的正则表达式能够首先匹配整个树结构,从 root_name ,直到其匹配 end up到 node1 。但是,如果我从node1传递字符串直到结束,那么我的正则是直到第一个 end 的匹配。(即,它将无法捕获What_about_me变量)我最近学到了有关平衡组的知识,我想知道如何使用它可以完全恢复树。

这是我目前正在使用的正则匹配根树和尺寸。(差异是 ^和$锚定值)

$AnchoredDelimiter = "(^(BEGIN)(s+)((`".*`")|((w|_|-)+))[rn]*)" 
$AnchoredClose = "((?-i)^END(t| )*)" 
$Root = "$AnchoredDelimiter$Body$AnchoredClose"
$Delimiter = "((BEGIN)(s+)((`".*`")|(w|_|-)+)[rn]*)" 
$Body = "((.|[rn])*?)"
$Close = "((?-i)END(t| )*)"  
$SubRoot = "$StandAlone$Delimiter$Body$Close"

使用正则

$Delimiter = "(((?-i)BEGIN(?i))(s+)((`".*`")|(w|_|-)+)[rn]*)"
$Close = "((?-i)bENDb(?i))" 
$Root = "(?m)$Delimiter(?<Contents>(?>s|(?<Delimiter>$Delimiter)|(?<-Delimiter>$Close)|.)+?(?(Delimiter)(?!)))$Close"

最新更新