使用TCL从目录路径中匹配和提取多个单词

  • 本文关键字:提取 单词 TCL 路径 使用 tcl
  • 更新时间 :
  • 英文 :


尝试匹配目录路径中的某个单词并提取值,示例

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]+$}]

最新更新