TCL:使用 lsearch 在列表中搜索包含特定字符的元素

TCL: searching a list for elements containing a particular character using lsearch

在以下列表中:

{12 34 23 54 67 75 46}

使用 lsearch,用于查找此列表中编号为 [= 的所有元素的搜索模式是什么19=]'4'在里面吗?

(即输出应该 return {34 54 46})

参考:lsearch

您可以使用:

 set newlist [lsearch -all -inline -glob $mylist *4*]

-glob 是默认值,我把它放在文档中。

-all 指示 return 所有结果,而不仅仅是第一个匹配项。

-inline 指示 return 列表作为结果。

如果您知道要匹配的内容不包含任何对 glob 具有特殊含义的字符,Brad Lanam 给出的答案将有效。如果不能保证,您可以使用:

set newlist [lsearch -all -inline -regexp $mylist (?q)4]

(?q) 使它后面的任何内容成为文字字符串。因此不会对任何字符进行特殊解释。但是默认情况下,正则表达式是不锚定的,因此字符串可以出现在列表元素的任何位置以进行匹配。