A-A+
TCL中的列表搜索命令lsearch
在TCL中使用lsearch命令在列表中查找指定的元素。它获取两个参数,第一个是一个列表,第二个是一个模式。lsearch返回列表中第一个与指定模式匹配的元素的索引,如果没有匹配的元素则返回-1。例如:
lsearch {a b c d e} c
→ 2
lsearch -all {a b c a b c} c
→ 2 5
可以通过在列表参数前指定下列标志之一来设定模式匹配的方式:-exact、-glob 和-regexp,-glob指定匹配按照 string match命令的规则进行。-regexp指定匹配按照正则表达式规则, -exact则要求进行严格匹配。如果没有指定匹配方式,那么默认设置为-glob。还可以用-not选项对匹配结果取反。 默认情况下, lsearch只查找最先出现的匹配的元素,可以使用-all将所有匹配的元素组成一个列表返回。
-inline选项指定返回元素,而非元素的索引。例如,
lsearch -inline -not {a20 b35 c47} b*
→ a20
如果要探测一个确切的字符串是否是列表中的一个元素,可以在表达式中分别使用in和ni操作符。