tcl/tk参考——列表操作lsearch

.

.

名称

lsearch - 在列表中寻找特定元素

语法

lsearch ?options? list pattern

描述

这个命令寻找list中与pattern匹配的元素。如果匹配到了返回第一次找到这个元素的索引(除非指定了-all-inline),如果没有匹配到返回-1。可选变元指出了列表的元素怎样去匹配pattern,可选项如下:

匹配风格可选项

默认的匹配风格为-glob,如果给出了多个匹配风格,那么最后给出的匹配风格有效。

-exact
pattern是字符串并且必须严格匹配每一个 list元素。
-glob
pattern是通配风格匹配每一个列表元素,与 string match命令类似。
-regexp
pattern被当作一个正则表达式来匹配列表中的每一个元素,与 re_syntax命令类似。
-sorted
列表元素被排序,如果指定了这个可选项, lsearch将会使用更加有效的查询算法去查列表。如果没有指定其它的可选项, list将被排列成升序并且包含ASCII码。这个可选项与 -glob-regexp互斥,当指定 了-all-not时与 -exact非常象。
一般修饰可选项

这些可选项可以在任何一种匹配风格中给出。

-all
返回一个列表,列表的元素为所有匹配到的索引,返回的索引按照数字顺序排列,如果同时指定了 -inline返回数值,数值的顺序就是在列表中的顺序。
-inline
返回匹配到的第一个元素。如果 -all也指定了,则返回一个列表,列表的元素为所有匹配到的数值。
-not
与匹配相反,返回第一个不匹配的数值的索引。
-start index
从列表的 index个索引开始搜索。
内容描述可选项

描述如何去解释在列表中寻找到的元素,只有当-exact-sorted指定时才有效。如果给出了多个可选项,那么最后给出的可选项有效。默认为-ascii。

-ascii
列表元素作为Unicode字符串来检查。
-dictionary
列表元素在比较时使用字典关系(查看 lsort以获取详细描述),只有当 -sorted可选项指定时才有有效。
-integer
列表中的元素被当作整数来处理。
-nocase
忽略大小写。与 -dictionary-integer-real搭配无效。
-real
列表中的元素被当作浮点数来处理。
列表排序可选项

这个可选项指定了列表如何排序,只有指定了-sorted时才有效。如果给出了多个可选项,那么最后给出的可选项有效。

-decreasing
列表元素为降序排列,只有指定了 -sorted时才有效。
-increasing
列表元素为升序排列,只有指定了 -sorted时才有效。
内嵌列表可选项

这些可选项被用来寻找子列表,可以与任何其它可选项一起使用。

-index indexList
这个可选项寻找内嵌的列表, indexList变元必须给出一个索引列表(与 lindexlset类似), indexList给出的索引列表在 list中必须存在对应的索引,否则会出错。
-subindices
这个可选项只返回寻找到的子列表元素,必须和 -index配合使用。

示例

基本搜索:

lsearch {a b c d e} c
       2
lsearch -all {a b c a b c} c
       2 5

过滤列表:

lsearch -inline {a20 b35 c47} b*
       b35
lsearch -inline -not {a20 b35 c47} b*
       a20
lsearch -all -inline -not {a20 b35 c47} b*
       a20 c47
lsearch -all -not {a20 b35 c47} b*
       0 2

甚至可以做切除操作:

lsearch -all -inline -not -exact {a b c a d e a f g a} a
       b c d e f g

搜索从半途开始:

lsearch -start 3 {a b c a b c} c
       5

搜索子列表中的元素:

lsearch -index 1 -all -inline {{a abc} {b bcd} {c cde}} *bc*
       {a abc} {b bcd}

 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCL(Tool Command Language) 本书籍由浅入深系统地介绍了Tcl语言,是学习Tcl语言的良师益友 Tcl编程初步 总目录 总目录 I 例索引. IV 表索引.VI 图索引VII 第 1 章. TCL基本知识 1 1.1 什么是 TCL ..1 1.2 TCL自学工具..1 1.3 TCL软件包 ..2 1.4 TCL命令格式..2 1.5 TCL脚本文件和 SOURCE 命令..3 1.6 可执行脚本文件(EXECUTABLE FILE) .3 1.7 获得帮助..4 1.7.1 Windows系统.4 1.7.2 Unix系统4 第 2 章. 输出、赋值与替换.. 5 2.1 PUTS .5 2.2 SET & UNSET ..5 2.3 替换6 2.3.1 $.6 2.3.2 [] 6 2.3.3 " " 和{} .6 2.3.4 \.7 第 3 章. 数学表达式与 EXPR命令. 8 3.1 数学和逻辑运算符..8 3.2 数学函数..8 3.3 数学运算举例9 3.4 INCR命令 .9 第 4 章. 字符串.. 10 4.1 基本命令集..10 4.2 APPEND命令.10 4.3 FORMAT命令.10 4.3.1 format 命令说明 10 4.3.2 format 举例.. 11 4.4 SCAN命令.12 4.5 BINARY命令..13 4.6 SUBST命令..14 4.7 STRING 命令 ..15 4.7.1 string 命令列表 15 4.7.2 字符串比较 16 4.7.3 string match字符串匹配.. 16 4.7.4 字符串替换 18 4.7.5 字符类别(class)测试. 18 4.7.6 字符串映射 19 第 5 章. TCL列表操作.. 20 5.1 列表命令集..20 5.2 LIST命令..20 5.3 CONCAT命令21 5.4 LAPPEND命令 ..21 5.5 LLENGTH 命令22 5.6 LINDEX命令22 5.7 LRANGE命令.22 5.8 LINSERT 和 LREPLACE命令..22 5.9 LSEARCH命令23 5.10 LSORT命令.24 5.11 JOIN与 SPLIT命令24 5.12 FOREACH控制结构27 第 6 章. 数组 28 6.1 数组的定义与格式28 6.2 数组变量29 6.3 多维数组29 6.4 数组操作命令.30 6.4.1 array get 命令 30 6.4.2 array names命令. 30 6.4.3 遍历数组 31 6.4.4 用数组定义结构.. 31 第 7 章. 控制结构命令. 32 7.1 IF/ELSE命令32 7.2 FOR命令.33 7.3 WHILE命令.33 7.4 BREAK 与 CONTINUE命令..34 7.5 SWITCH命令..34 7.6 CATCH 命令..35 7.7 ERROR命令36 7.8 RETURN 命令..37 7.9 EXIT命令.37 第 8 章. 过程与作用域. 38 8.1 PROC—过程定义命令..38 8.2 作用域.40 8.2.1 过程的作用域 40 8.2.2 变量的作用域 40 8.3 UPVAR命令42 8.4 RENAME命令 44 8.5 特殊变量45 8.5.1 命令行参数 45 8.5.2 env--环境变量数组 45 8.6 EVAL命令..46 8.7 UPLEVEL命令.48 第 9 章. 正则表达式(REGULAR EXPRESSIONS).. 49 9.1 REGEXP命令 .49 9.2 REGSUB命令..51 9.3 正则表达式的语法52 9.3.1 分支(branch)和原子(atom) 52 9.3.2 基本语法 52 9.3.2.1 匹配字符52 9.3.2.2 限定匹配53 9.3.2.3 方括号表达式与字符集.53 9.3.2.4 匹配分支54 9.3.2.5 量词(Qulifier)..54 9.3.2.6 子模式与匹配报告捕获.55 9.3.2.7 反斜杠引用..56 9.3.2.8 匹配优先级..56 9.3.3 高级正则表达式(AREs).. 57 9.3.3.1 反斜杠换码(escape)序列57 9.3.3.2 归整元素(collating element) ..57 9.3.3.3 等价类(equivalence class) ..58 9.3.3.4 字符类(character class).58 9.3.3.5 非贪婪量词..59 9.3.3.6 约束量词59 9.3.3.7 回退引用59 9.3.3.8 前瞻(lookahead)60 9.3.3.9 换行符敏感的匹配60 9.3.3.10 嵌入式选项60 9.3.3.11 扩展语法.60 9.3.4 语法小结 60 9.3.5 其它支持正则表达式的命令.. 60 第 10 章. 名字空间. 62 10.1 创建名字空间62 10.2 用::限定符来使用变量和过程.62 10.3 名字空间的变量 63 10.4 过程的进口与出口64 10.5 内省(INTROSPECTION) 65 10.6 名字空间命令集 65 第 11 章. 跟踪与调试. 67 11.1 CLOCK命令..67 11.1.1 clock clicks命令 67 11.1.2 clock seconds命令 67 11.1.3 clock format 命令 68 11.1.4 clock scan命令. 70 11.2 INFO 命令71 11.2.1 info level .. 72 11.2.2 info exists . 72 11.3 TRACE命令73 11.3.1 trace variable 73 11.3.2 trace vdelete. 75 11.3.3 trace vinfo 75 第 12 章. 脚本库与软件包 76 12.1 声明和使用软件包76 12.1.1 软件包定位 76 12.1.2 声明软件包命令.. 76 12.1.3 加载软件包命令.. 76 12.1.4 自动加载与软件包索引 77 12.1.5 用链接库提供软件包. 79 12.2 PACKAGE命令集80 12.3 小结80 第 13 章. 文件操作与程序调用.. 81 13.1 文件操作..81 13.1.1 文件 I/O. 81 13.1.2 文件系统信息命令.. 82 13.1.2.1 glob命令..83 13.1.2.2 file命令集..83 13.2 程序调用..85 13.2.1 用 open命令打开一个进程管道. 85 13.2.2 用 exec命令调用程序. 87 13.2.3 pid命令. 88 第 14 章. 套接字与事件驱动编程简介 89 14.1 套接字编程.89 14.1.1 socket 命令.. 89 14.1.1.1 Client端socket命令..89 14.1.1.2 Server端socket命令选项90 14.1.2 用 fconfigure配置套接字. 90 14.1.3 C/S编程举例 90 14.2 事件驱动编程93 14.2.1 after命令. 93 14.2.2 fileevent 命令. 96 14.2.3 vwait 命令 96 14.2.4 fconfigure命令 . 97 14.2.4.1 fconfigure语法.97 14.2.4.2 非阻塞I/O.98 14.2.4.3 缓冲 ..98 参考文献. 100 例索引 例 1-1 输出一段字符串的例子.. 2 例 1-2 source命令的简单例子 3 例 2-1 输出一个词的例子 5 例 2-2 参数定义、赋值与参数值引用 5 例 2-3 嵌套$用做替换操作. 6 例 2-4 命令替换[]的例子 6 例 2-5 {}替换的例子.. 6 例 2-6 \的例子.7 例 2-7 不规范的续行 7 例 3-1 数学运算举例. 9 例 4-1 append命令的简单例子. 10 例 4-2 位置说明符的例子. 11 例 4-3 format命令的简单例子. 11 例 4-4 scan命令的简单例子. 12 例 4-5 体验 binary format 和 binary scan的作用 13 例 4-6 binary命令的简单应用.. 14 例 4-7 subst命令的简单例子. 14 例 4-8 string compare 和 string equal进行字符串比较的例子. 16

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值