I am trying to parse F5 object. It has below structure.
Some Garbage text
ltm virtual The_Name_51244_sdfasfdasd {
address-status yes
enabled
fallback-persistence none
profiles {
/Common/GLOBAL_PROFILE {
context all
}
/Common/http {
context all
}
}
rate-class none
rules {
/Common/X-F-F
}
log-profiles none
source-address-translation {
pool SOME-SNAT-POOL
type snat
}
source-port preserve
vlans {
Vlan1111
}
service-down-immediate-action none
service-policy none
source 0.0.0.0/0
}
barbage text
ltm virtual The_Object_51244 {
address-status yes
enabled
fallback-persistence none
profiles {
/Common/GLOBAL_PROFILE {
context all
}
/Common/http {
context all
}
}
rate-class none
rules {
/Common/X-F-F
}
log-profiles none
source-address-translation {
pool SOME-SNAT-POOL
type snat
}
source-port preserve
vlans {
Vlan2222
}
service-down-immediate-action none
service-policy none
source 0.0.0.0/0
}
Trailing garbage text
My regex is ((ltm virtual) ([a-zA-Z0-9_-]*) {(.|\n)*?})
https://regex101.com/r/ATJZys/1
What I am trying to capture is name after ltm virtual and everything between curly brackets. But, above regex seems to stop at first close curly bracket match.
How do I extent it to match until next parent group or match until curly brackets are balanced?