如何使用regsub在模式tcl之后获取值?
如果我有一个值如下的变量:如何使用regsub在模式tcl之后获取值?,tcl,Tcl,如果我有一个值如下的变量: set var "/abc/def/ghi/jkl/mno/pqr" 如何使用regsub,使其删除除最后一个值“mno”之外的所有内容?为什么使用正则表达式? 那么: set val [file tail [file dirname $var]] 参考资料:为什么使用正则表达式? 那么: set val [file tail [file dirname $var]] 参考资料:试试这个,使用split和lindex % set var "/abc/def/gh
set var "/abc/def/ghi/jkl/mno/pqr"
如何使用regsub,使其删除除最后一个值“mno”之外的所有内容?为什么使用正则表达式?
那么:
set val [file tail [file dirname $var]]
参考资料:为什么使用正则表达式?
那么:
set val [file tail [file dirname $var]]
参考资料:试试这个,使用
split
和lindex
% set var "/abc/def/ghi/jkl/mno/pqr"
/abc/def/ghi/jkl/mno/pqr
%
% puts "[lindex [split $var "/"] end-1]"
mno
使用
split
和lindex
% set var "/abc/def/ghi/jkl/mno/pqr"
/abc/def/ghi/jkl/mno/pqr
%
% puts "[lindex [split $var "/"] end-1]"
mno
你可以这样做:
set updatedValue [regsub {^.*(mno).*$} $value {\1}]
这是Unix实用程序sed中的一个老把戏,它被翻译成了Tcl。这将删除除最后一个匹配的文本以外的所有内容mno
。选择合适的答案
请不要用这个来操纵文件名。它可能会工作,但会使代码更加混乱。file
命令具有用于这类工作的实用程序子命令,它们处理您可能不知道的棘手问题。好的,您可以这样做:
set updatedValue [regsub {^.*(mno).*$} $value {\1}]
这是Unix实用程序sed中的一个老把戏,它被翻译成了Tcl。这将删除除最后一个匹配的文本以外的所有内容mno
。选择合适的答案
请不要用这个来操纵文件名。它可能会工作,但会使代码更加混乱。
file
命令具有用于此类工作的实用程序子命令,它们处理您可能不知道的棘手问题。匹配模式的约束是基于字符串mno
还是以/
作为分隔符的最后一个元素?匹配模式的约束是否基于在字符串mno
或最后第二个元素上使用/
作为分隔符?