Я сделал следующий пакет с четырьмя новыми командами, чтобы упростить использование regsub
и map
. Я использовал эти команды довольно долго и до сих пор хорошо работает. Мне интересно, есть ли у кода недостатки, которые могут иметь нежелательные результаты или ошибки в будущем.Tcl: упаковка упаковки regsub и строка карты *** Поиск побочных эффектов ***
regdel имяПеремарг (удалить из имяПерем регулярных выражений, соответствующих арг)
mapdel имяПеремарг (удалить из имяПерем соответствие строка арг)
regrep имяПеремехрРЕПЛ (заменить ехр в имяПерем с РЕПЛ)
maprep имяПеремстрокаРЕПЛ (замените строку в VarName с РЕПЛ)
Удалите цифры с помощью regdel
regdel inputFile {[[:digit:]]}
Удалите цифры с помощью mapdel
mapdel inputFile 0 1 2 3 4 5 6 7 8 9
Заменить пустые символы, используя regrep
regrep inputFile {[[:space:]]+} \n
Заменить пустые символы, используя maprep
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]
}
Я предлагаю сделать ансамбли. –