Posted to tcl by kbk at Wed Nov 29 19:54:14 GMT 2006view pretty
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 ]