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 ]