尝试匹配目录路径中的某个单词并提取值,示例
C:workingEver7FILE
我需要从路径中提取Ever7
,并且效果很好
set seq $name
set aa [split $seq \]
set bb [lsearch -inline $aa Ev*]
set seq_number $bb
现在我的问题是Ever7
它有所不同,意味着它将是其他单词,有Ever7, Mak, Inge, DM, FP, Lin
如何添加或更改上述表达式,以便它可以匹配 Ever7 or Mak or Inge or DM or FP or Lin
,如果匹配这些单词,它将设置为seq_number作为代码的下一行。如果可以显示更改,那就太好了。
假设您可以在恒定位置可靠地找到感兴趣的路径段,您可能需要使用TCL的功能来对文件系统路径进行内省:
set fp "/working/Ever7/FILE"
set needles [list Ever7 Mak Inge DM FP Lin]
if {[lindex [file split $fp] 2] in $needles} {
incr seq_number
}
否则,没有任何保证,只需通过[string match]
的针头运行一个循环:
foreach needle $needles {
if {[string match *$needle* $fp]} {
incr seq_number
break;
}
}
这不需要您的干草堆在之前转换为TCL列表。
我找到了答案,通过更改bb的代码
set bb [lsearch -inline -regexp $mach {^[DM|Ever7|Inge|FP|Lin|Mak]+$}]