【发布时间】:2018-12-13 13:54:35
【问题描述】:
在以下列表中:
{12 34 23 54 67 75 46}
使用 lsearch,用于从列表中查找所有编号为 '4'在里面吗?
(即输出应返回 {34 54 46})
【问题讨论】:
-
您应该在下次询问时发布您尝试过的内容(参见mcve)。
在以下列表中:
{12 34 23 54 67 75 46}
使用 lsearch,用于从列表中查找所有编号为 '4'在里面吗?
(即输出应返回 {34 54 46})
【问题讨论】:
参考:lsearch
你可以使用:
set newlist [lsearch -all -inline -glob $mylist *4*]
-glob 是默认值,我将其用于文档目的。
-all 表示返回所有结果,而不仅仅是第一个匹配。
-inline 表示返回列表作为结果。
【讨论】:
如果您知道所匹配的内容不包含任何对 glob 具有特殊含义的字符,则 Brad Lanam 给出的答案将起作用。如果不能保证,您可以使用:
set newlist [lsearch -all -inline -regexp $mylist (?q)4]
(?q) 使后面的任何内容成为文字字符串。所以不会发生对任何字符的特殊解释。但是正则表达式默认是不锚定的,所以字符串可以出现在要匹配的列表元素的任意位置。
【讨论】: