tcl list lsearch通配符覆盖

时间:2013-12-02 07:02:56

标签: tcl wildcard

我有一个这样的对的tcl列表;其中一个有(*)星作为第二个元素。

{ff 122} {ff 1} {fg 1} {ff *} {fg *} ---> var1

现在我想使用

搜索{fg *}对
lsearch $var1 [list "fg" "*"]

但错误地显示2 {fg 1}而不是4 {fg *},因为*充当通配符标识符。我不能使用/ *或{*}覆盖它。任何人都可以帮助我解决这个压倒一切的问题。

2 个答案:

答案 0 :(得分:3)

lsearch允许您选择用于字符串匹配的算法。默认值为-glob,它会对*进行通配符扩展。但您也可以选择-exact进行普通字符串匹配,或选择-regexp作为正则表达式:

lsearch -exact $var1 "fg *"

lsearch -regexp $var1 {fg \*}

甚至

lsearch -regexp $var1 {fg\s*\*}

取决于您实际打算做什么。

请参阅:http://www.tcl.tk/man/tcl8.6/TclCmd/lsearch.htm

答案 1 :(得分:-1)

lsearch -inline -all $var1 "fg \\\*"