如果我的变量具有这样的值:
set var "/abc/def/ghi/jkl/mno/pqr"
如何使用regsub以便删除除第二个最后一个值“mno”以外的所有内容?
答案 0 :(得分:1)
答案 1 :(得分:1)
% regexp {.*/([^/]+)/} $var -> val
1
% set val
mno
答案 2 :(得分:1)
尝试使用split
和lindex
% set var "/abc/def/ghi/jkl/mno/pqr"
/abc/def/ghi/jkl/mno/pqr
%
% puts "[lindex [split $var "/"] end-1]"
mno
答案 3 :(得分:1)
嗯,你可以这样做:
set updatedValue [regsub {^.*(mno).*$} $value {\1}]
这是来自Unix实用程序的旧技巧,sed,翻译成Tcl。这将删除除最后一个匹配mno
的文本之外的所有内容。适当选择你的RE。
请不要使用它来操作文件名。它可能会起作用,但它会使您的代码更加混乱。 file
命令具有用于此类工作的实用程序子命令,它们可以处理您可能不知道的棘手问题。