set txt {([(A touch B) over C] touch {D touch E}) is good}
set squares {\[[^][]*\]}
set braces {\{[^{}]*\}}
set cap "($squares|$braces)"
set rx "\\($cap touch $cap\\) is good";
lassign [lrange [regexp -all -inline $rx $txt] 1 end] P1 P2
puts "$P1 ::: $P2"
c2V0IHR4dCB7KFsoQSB0b3VjaCBCKSBvdmVyIENdIHRvdWNoIHtEIHRvdWNoIEV9KSBpcyBnb29kfQpzZXQgc3F1YXJlcyB7XFtbXl1bXSpcXX0Kc2V0IGJyYWNlcyB7XHtbXnt9XSpcfX0Kc2V0IGNhcCAiKCRzcXVhcmVzfCRicmFjZXMpIgpzZXQgcnggIlxcKCRjYXAgdG91Y2ggJGNhcFxcKSBpcyBnb29kIjsgCmxhc3NpZ24gW2xyYW5nZSBbcmVnZXhwIC1hbGwgLWlubGluZSAkcnggJHR4dF0gMSBlbmRdIFAxIFAyCnB1dHMgIiRQMSA6OjogJFAyIg==