我的文件将字段存储在嵌套结构中,使用开始和结束关键字。例如,
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"