Posted to tcl by kbk at Sat Feb 26 18:45:46 GMT 2011view pretty

set text {And what is your definition of "between {{ and }}" {{in {{a string}} {{like this}} one}}?}

set depth 0
set index 0
set result {}
while {[regexp -start $index {\{\{|\}\}|[^{}]+|\{|\}} $text match]} {
    puts stderr [list index $index match $match depth $depth]
    if {$match eq "\}\}"} {
	incr depth -1
    }
    if {$depth == 0} {
	append result $match
    }
    if {$match eq "\{\{"} {
	incr depth
    }
    incr index [string length $match]
}

puts $result