【发布时间】:2015-04-09 21:52:31
【问题描述】:
我用四个新命令制作了以下软件包,以简化regsub 和map 的使用。我使用这些命令已经有一段时间了,到目前为止运行良好。我想知道代码是否有任何弱点,将来可能会产生不良结果或错误。
regdel varName args(从 varName 正则表达式中删除匹配 args)
mapdel varName args(从 varName 字符串中移除匹配 args)
regrep varName exp repl(将 varName 中的 exp 替换为 repl)
maprep varName string repl(将 varName 中的 string 替换为 repl)
使用 regdel 删除数字
regdel inputFile {[[:digit:]]}
使用 mapdel 删除数字
mapdel inputFile 0 1 2 3 4 5 6 7 8 9
使用 regrep 替换空白字符
regrep inputFile {[[:space:]]+} \n
使用 mapprep 替换空白字符
maprep inputFile " " \n
包装代码:
package provide myregex 1.0
proc regdel {ref args} {
upvar 1 $ref var
foreach match $args {
regsub -all $match $var "" var
}
}
proc mapdel {ref args} {
upvar 1 $ref var
foreach match $args {
set var [string map [list "$match" ""] $var]
}
}
proc regrep {ref match repl} {
upvar 1 $ref var
regsub -all $match $var $repl var
}
proc maprep {ref match repl} {
upvar 1 $ref var
set var [string map [list "$match" "$repl"] $var]
}
【问题讨论】: