lsearch与需要花括号的元素不匹配(Tcl 8.4)

时间:2014-11-07 23:47:34

标签: list tcl brackets curly-braces

我正在处理大量信号。我已经能够将它们存储到列表中,但由于它们的名称有括号,因此信号存储在列表中。后来,使用正则表达式,我分析了一些产生的输出,如果匹配,我需要设置一个标志。

在下面的示例中,我展示了添加到列表中的元素,稍后我尝试使用 lsearch

检查列表中是否存在相同的元素
set mylist [list]
set element {aux[1]}

lappend mylist $element
puts "mylist: $mylist \nelement: $element\n\[list element\]: [list $element]"

这个结果是:

mylist: {aux[1]}
element: aux[1]
[list element]: {aux[1]}

由于我的元素存储为 {a [1]} ,我还没有办法让 lsearch 返回匹配

set result [lsearch $mylist $element]
set result2 [lsearch $mylist [list $element]]

puts $result
puts $result2

两个结果都返回' -1'。

我见过解决方案,但没有一个使用Tcl 8.4;由于向后兼容性,我需要使用它。

1 个答案:

答案 0 :(得分:4)

使用-exact匹配样式。默认样式为-glob,这意味着子字符串[1]与单个1匹配。

lsearch -exact $mylist $element
# => 0

文档:lsearch