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) 使它后面的任何内容成为文字字符串。因此不会对任何字符进行特殊解释。但是默认情况下,正则表达式是不锚定的,因此字符串可以出现在列表元素的任何位置以进行匹配。
在以下列表中:
{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) 使它后面的任何内容成为文字字符串。因此不会对任何字符进行特殊解释。但是默认情况下,正则表达式是不锚定的,因此字符串可以出现在列表元素的任何位置以进行匹配。