Regexp tcl(TCL脚本语言中Isearch命令% lsearch $a y* 2 % lsearch $a y -1)

2024-04-25 10:50:05 :65

regexp tcl(TCL脚本语言中Isearch命令% lsearch $a y* 2 % lsearch $a y -1)

其实regexp tcl的问题并不复杂,但是又很多的朋友都不太了解TCL脚本语言中Isearch命令% lsearch $a y* 2 % lsearch $a y -1,因此呢,今天小编就来为大家分享regexp tcl的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

TCL脚本语言中Isearch命令% lsearch $a y* 2 % lsearch $a y -1

1 list命令 语法: list ? value value...? 这个命令生成一个list,list的元素就是所有的value。例: % list 1 2 {3 4} 1 2 {3 4}concat命令: 语法:concat list ?list...? 这个命令把多个list合成一个list,每个list变成新list的一个元素。3 lindex命令 语法:lindex list index 返回list的第index个(0-based)元素。例: % lindex {1 2 {3 4}} 2 3 44 llength命令 语法:llength list 返回list的元素个数。例 % llength {1 2 {3 4}} 35 linsert命令 语法:linsert list index value ?value...? 返回一个新串,新串是把所有的value参数值插入list的第index个(0-based)元素之前得到。例: % linsert {1 2 {3 4}} 1 7 8 {9 10} 1 7 8 {9 10} 2 {3 4}6 lreplace命令: 语法:lreplace list first last ?value value ...? 返回一个新串,新串是把list的第firs (0-based)t到第last 个(0-based)元素用所有的value参数替换得到的。如果没有value参数,就表示删除第first到第last个元素。例: % lreplace {1 7 8 {9 10} 2 {3 4}} 3 3 1 7 8 2 {3 4} % lreplace {1 7 8 2 {3 4}} 4 4 4 5 6 1 7 8 2 4 5 67 lrange 命令: 语法:lrange list first last 返回list的第first (0-based)到第last (0-based)元素组成的串,如果last的值是end。就是从第first个直到串的最后。 例: % lrange {1 7 8 2 4 5 6} 3 end 2 4 5 68 lappend命令: 语法:lappend varname value ?value...? 把每个value的值作为一个元素附加到变量varname后面,并返回变量的新值,如果varname不存在,就生成这个变量。例: % lappend a 1 2 3 1 2 3 % set a 1 2 39 lsearch 命令: 语法:lsearch ?-exact? ?-glob? ?-regexp? list pattern 返回list中第一个匹配模式pattern的元素的索引,如果找不到匹配就返回-1。-exact、-glob、 -regexp是三种模式匹配的技术。-exact表示精确匹配;-glob的匹配方式和string match命令的匹配方式相同,将在后面第八节介绍string命令时介绍;-regexp表示正规表达式匹配,将在第八节介绍regexp命令时介绍。缺省时使用-glob匹配。例: % set a { how are you } how are you % lsearch $a y* 2 % lsearch $a y? -110 lsort命令: 语法:lsort ?options? list 这个命令返回把list排序后的串。options可以是如下值: -ascii 按ASCII字符的顺序排序比较.这是缺省情况。 -dictionary 按字典排序,与-ascii不同的地方是: (1)不考虑大小写 (2)如果元素中有数字的话,数字被当作整数来排序. 因此:bigBoy排在bigbang和bigboy之间, x10y 排在x9y和x11y之间. -integer 把list的元素转换成整数,按整数排序. -real 把list的元素转换成浮点数,按浮点数排序. -increasing 升序(按ASCII字符比较) -decreasing 降序(按ASCII字符比较) -command command TCL自动利用command 命令把每两个元素一一比较,然后给出排序结果。11 split命令: 语法:split string ?splitChars? 把字符串string按分隔符splitChars分成一个个单词,返回由这些单词组成的串。如果splitChars 是一个空字符{},string被按字符分开。如果splitChars没有给出,以空格为分隔符。例: % split "how.are.you" . how are you % split "how are you" how are you % split "how are you" {} h o w { } a r e { } y o u12 join命令 语法:join list ?joinString? join命令是命令的逆。这个命令把list的所有元素合并到一个字符串中,中间以joinString分开。缺省的joinString是空格。例: % join {h o w { } a r e { } y o u} {} how are you % join {how are you} . how.are.you

tcl 脚本中如何读取txt文件内容总行数后作为变量使用

首先指出一个BUG," close $b "应该放在while { != -1 } {...close $b}否则会资源泄露。文件b的从行数可以统计换行符获得。不知道你想要统计文件b的行数替代什么? 我的意思是,从你的程序中看不出为什么要统计b的从行数。当if {} 条件始终不成立时,flag的值正好是b的总行数。

tcl列表操作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 变元必须给出一个索引列表(与 lindex 和 lset 类似), 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} ***隐藏网址***

regsub 命令

在TCL中可以使用命令regsub通过正则表达式进行字符串替换。命令格式如下: regsub ?switches? exp string subSpec?varName? 例如: regsub there "They live therelives" their x →1 regsub的第一个参数是正则表达式模式,第二个参数是输入字符串,与regexp相同。而且,与 regexp相似, regsub返回1代表字符串与模式匹配,返回0代表不匹配。它还可以把匹配的子字符串替换为指定的替换字符串,从而创建一个新的字符串。替换字符串就是 regsub的第三个参数, 最后一个参数是存放这个新的字符串的变量名。因此,在上面这个命令完成后,x的值为They live their lives。如果字符串不能与模式匹配,则会返回0,x的值为They live there lives (无论是否发生替换,都会设置这个变量)。 在正则表达式参数之前,还可以提供一个或多个选项, regexp支持的很多选项在regsub中也可用。通常regsub只进行简单的替换,替换掉输入字符串中最先出现的匹配项。然而,如果指定了-al选项, regsub就会继续查找,直到把所有的匹配项都加以替换,然后它会返回替换的次数。例如,执行以下命令: regsub -all a ababa zz x x的值为zzbzzbzz。如果没有-all选项,x的值为 zzbaba。 -nocase选项要求在模式中的字母原子进行匹配时不区分大小写。-start命令指定字符串中一个字符的索引,从指定字符处开始查找匹配。-line选项启动区分换行的匹配,和regexp相同。可以使用--来明确地标记命令选项结束。 如果替换字符串包含&或\0,其中的&或\0会被替换为与正则表达式相匹配的子字符串。如是\n形式的序列出现在置换字符串中(n是一个十进制数),与第n个捕获的子表达式相匹配的子字符串会替换掉这个\n. 例如,以下命令会把输入字符串中所有的a和b都写两遍。 regsub -all -- a|b axaab && x 这里它把x赋值为 aaxaaaabb。另外,以下命令会把后面有一个b而前面没有一个b的a的序列替换为一个z. regsub –all -- (a+)(ba*) aabaabxab {z\2} x 这里ⅹ被赋值为zbaabxzb。反斜线可以用来代入有特殊含义的字符,避免解释器对它们进行特殊处理.

tcl中正则表达式的匹配问题

像+ * ? 以及{M,N}这几种量词(匹配数量)默认是属于贪婪量词,进行贪婪匹配什么叫做贪婪匹配呢?贪婪就是尽可能的多匹配,贪心的意思比如现在目标字符串是 AAAA 四个A组成的字符串A* 和 A+ 都会匹配 AAAAA? 则会匹配 A这就是贪婪匹配,实际运用中,有的时候我们却希望尽可能少的匹配比如目标字符串 《span》a《/span》《span》b《/span》此时如果我们使用了贪婪量词《span》.*《/span》 则会匹配 《span》a《/span》《span》b《/span》 整个字符串可是我们只想要匹配第一对span标签怎么办?此时就需要用到懒惰量词,意思也很明显了,能偷懒就偷懒,呵呵,懒惰量词与贪婪量词的差别就是在贪婪量词的后面加个?号,就构成了懒惰量词,如下表贪婪量词 懒惰量词A* A*?A+ A+?A? A??A A?还是以目标字符串 AAAA 来讨论A*? *号是匹配0次或多次,要偷懒怎么办呢?当然是最少次数了,也就是0 所以在这里匹配的结果是没有匹配到任何内容A+?+是1次或多次,分析方法同上,最少次数是1次,所以匹配结果就是 AA???是0次或1次,所以这里也不进行匹配,会偷懒吧,呵呵再来看看刚刚的《span》a《/span》《span》b《/span》 要匹配第一对span,用懒惰量词就是《span》.*?《/span》 我已经说的够明白了吧?这些内容我以前都是查了好多资料才知道的。正则表达式是相当强大的语言,尤其在进行字符匹配和查找时,当然要需要花一定的时间才能掌握,如果有问题可以百度HI我,进行探讨

有关Tcl脚本语言编程的问题

set srcfile myres.resset dstfile dtest.txtif {} { puts "Failed to open the source file: $srcfile; $res" return 0}set hSrc $resif {} { puts "Failed to open the destination file: $dstfile; $res" return 0}set hDst $resforeach line { if {} { puts $hDst "Rise Delay is $sub1" } if {} { puts $hDst "Fall Delay is $sub1" }}close $hSrcclose $hDst

关于regexp tcl到此分享完毕,希望能帮助到您。

regexp tcl(TCL脚本语言中Isearch命令% lsearch $a y* 2 % lsearch $a y -1)

本文编辑:admin
regexp tcl ,search
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.