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

:暂无数据 2026-07-20 01:20:01 :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,因此呢,今天小编就来为大家分享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 4
4 llength命令
语法:llength list
返回list的元素个数。例
% llength {1 2 {3 4}}
3
5 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 6
7 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 6
8 lappend命令:
语法:lappend varname value ?value...?
把每个value的值作为一个元素附加到变量varname后面,并返回变量的新值,如果varname不存在,就生成这个变量。例:
% lappend a 1 2 3
1 2 3
% set a
1 2 3
9 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?
-1
10 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 u
12 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

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 脚本中如何读取txt文件内容总行数后作为变量使用

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

tcl 正则表达式循环匹配

虽然Tcl我不会,但是我有个想法不知道能不能帮上楼主。
在perl中/g并不是一次就全部匹配的,而是从上次匹配的结束处开始尝试新的匹配。
猜测Tcl也行
你看看这样行不行(我不会Tcl语法,就当c写了)
while($num)
{
puts
i++
}

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

像+ * ? 以及{M,N}
这几种量词(匹配数量)默认是属于贪婪量词,进行贪婪匹配
什么叫做贪婪匹配呢?贪婪就是尽可能的多匹配,贪心的意思
比如现在目标字符串是 AAAA 四个A组成的字符串
A* 和 A+ 都会匹配 AAAA
A? 则会匹配 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次,所以匹配结果就是 A
A??
?是0次或1次,所以这里也不进行匹配,会偷懒吧,呵呵
再来看看刚刚的
《span》a《/span》《span》b《/span》
要匹配第一对span,用懒惰量词就是《span》.*?《/span》
我已经说的够明白了吧?这些内容我以前都是查了好多资料才知道的。
正则表达式是相当强大的语言,尤其在进行字符匹配和查找时,当然要需要花一定的时间才能掌握,如果有问题可以百度HI我,进行探讨

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

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

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}

***隐藏网址***

如果你还想了解更多这方面的信息,记得收藏关注本站。

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

本文编辑:admin

本文相关文章:


elasticsearch 分词器(Elasticsearch Analyzer详解)

elasticsearch 分词器(Elasticsearch Analyzer详解)

大家好,今天小编来为大家解答以下的问题,关于elasticsearch 分词器,Elasticsearch Analyzer详解这个很多人还不知道,现在让我们一起来看看吧!

2026年7月5日 12:40

更多文章:


withdrawal(withdrawal是什么意思)

withdrawal(withdrawal是什么意思)

今天给各位分享withdrawal是什么意思的知识,其中也会对withdrawal是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 07:00

根据流程图怎么编写程序(用c语言根据流程图写程序)

根据流程图怎么编写程序(用c语言根据流程图写程序)

大家好,今天小编来为大家解答以下的问题,关于根据流程图怎么编写程序,用c语言根据流程图写程序这个很多人还不知道,现在让我们一起来看看吧!

2026年10月11日 06:00

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

大家好,关于在from子句中可以出现很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何在from 子句中嵌套查询下面的语句在access中出错!的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望

2026年10月11日 05:20

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

其实countif函数统计个数怎么用的问题并不复杂,但是又很多的朋友都不太了解countif函数怎么用 详解Excel中countif函数的使用方法,因此呢,今天小编就来为大家分享countif函数统计个数怎么用的一些知识,希望可以帮助到大

2026年10月11日 03:30

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

本篇文章给大家谈谈正则匹配数字之前的字符,以及正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问

2026年10月11日 03:00

register语言学(register语言学)

register语言学(register语言学)

“register语言学”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看register语言学(register语言学)!

2026年10月11日 01:40

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

“系统架构设计师可以直接考吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)!

2026年10月11日 01:00

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

大家好,如果您还对orlnsertbootmediinselected不太了解,没有关系,今天就由本站为大家分享orlnsertbootmediinselected的知识,包括我电脑开机显示这个是什么意思or insert boot med

2026年10月10日 23:00

display的用法(display是什么意思 详解display的含义和用法)

display的用法(display是什么意思 详解display的含义和用法)

大家好,如果您还对display的用法不太了解,没有关系,今天就由本站为大家分享display的用法的知识,包括display是什么意思 详解display的含义和用法的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月10日 22:00

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

大家好,今天小编来为大家解答以下的问题,关于html全部居中代码,怎么让网页居中显示,html如何让网页居中这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 21:10

最近更新

withdrawal(withdrawal是什么意思)
2026-10-11 07:00:01 浏览:0
热门文章

标签列表