proc regsub2 {re inStr by {varName ""}} { # Simple version of regsub but support substitution by proc: # regsub2 $re $str $by, where $by can be {proc \1 \2...} set result $inStr set byCallStr [regsub -all {\\(\d+)} $by {$m\1}] set matchedVarsCount [lindex [regexp -about $re] 0] set matchedVarNames {all} for {set i 1} {$i <= $matchedVarsCount} {incr i} { lappend matchedVarNames "m$i" } set nsubs 0 foreach $matchedVarNames [regexp -all -inline $re $result] { set byRes [eval $byCallStr] set result [regsub $re $result $byRes] incr nsubs } if {$varName eq ""} { return $result } else { upvar 1 $varName varName_ set varName_ $result return $nsubs } }If you call it with IncrTcl then use ::itcl::code proc.
суббота, 24 ноября 2012 г.
Tcl 'regsub' with replacing by procedure call
This is the procedure like regsub but replacement is happens with procedure - not text:
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий
Thanks for your posting!