fork download
  1. set txt {([(A touch B) over C] touch {D touch E}) is good}
  2. set squares {\[[^][]*\]}
  3. set braces {\{[^{}]*\}}
  4. set cap "($squares|$braces)"
  5. set rx "\\($cap touch $cap\\) is good";
  6. lassign [lrange [regexp -all -inline $rx $txt] 1 end] P1 P2
  7. puts "$P1 ::: $P2"
Success #stdin #stdout 0s 4892KB
stdin
Standard input is empty
stdout
[(A touch B) over C] ::: {D touch E}