我有一个这样的对的tcl列表;其中一个有(*)星作为第二个元素。
{ff 122} {ff 1} {fg 1} {ff *} {fg *} ---> var1
现在我想使用
搜索{fg *}对lsearch $var1 [list "fg" "*"]
但错误地显示2 {fg 1}而不是4 {fg *},因为*充当通配符标识符。我不能使用/ *或{*}覆盖它。任何人都可以帮助我解决这个压倒一切的问题。
答案 0 :(得分:3)
lsearch
允许您选择用于字符串匹配的算法。默认值为-glob
,它会对*
进行通配符扩展。但您也可以选择-exact
进行普通字符串匹配,或选择-regexp
作为正则表达式:
lsearch -exact $var1 "fg *"
或
lsearch -regexp $var1 {fg \*}
甚至
lsearch -regexp $var1 {fg\s*\*}
取决于您实际打算做什么。
答案 1 :(得分:-1)
lsearch -inline -all $var1 "fg \\\*"