Posted to tcl by kbk at Wed Nov 29 19:54:14 GMT 2006view raw
- proc OptionalUnicode {x} {
- return TEST$x
- }
- set teststring {
- this
- a[:optional_unicode(foo):]b
- c[:optional_unicode(bar):]d
- that
- }
- set pattern {\[\:optional_unicode\(([^)]*)\):\]}
- set i 0
- set output {}
- while {[regexp -indices -start $i $pattern $teststring whole part]} {
- foreach {i0 i3} $whole break
- foreach {i1 i2} $part break
- append output \
- [string range $teststring $i [expr ($i0-1)]] \
- [OptionalUnicode [string range $teststring $i1 $i2]]
- set i [expr {$i3 + 1}]
- }
- append output [string range $teststring $i end]
- puts $output
Comments
Posted by joseki at Wed Nov 29 20:03:50 GMT 2006 [text] [code]
proc regsub-eval { pattern teststring } { set i 0 set output {} while {[regexp -indices -start $i $pattern $teststring whole part]} { foreach {i0 i3} $whole break foreach {i1 i2} $part break append output \ [string range $teststring $i [expr ($i0-1)]] \ [Optional_Unicode [string range $teststring $i1 $i2]] set i [expr {$i3 + 1}] } append output [string range $teststring $i end] } set pattern {\[\:optional_unicode\(([^)]*)\):\]} set xml [ regsub-eval $pattern $xml ]