TCL刷题(2022.7.14)

逻辑运算符
&& 与
|| 或
!  非

位运算符
&  二进制与操作
|  二进制或操作
^  二进制异或操作
<< 二进制左移运算符
>> 二进制右移运算符
数组定义的格式有两种:
1、set arrName(index) value
2、array set arrName { index1 value1 index2 value2 ...} 

()小括号会被当成数组名的标志,而不是变量名的一部分

array set ret {0,0 1 0,1 2 0,2 3 \
1,0 a 1,1 b 1,2 c}
“array set arrName { index1 value1 index2 value2 ...} ”命令格式中没有逗号“,” ,所以逗号会被当成索引字符串的一部分,而不是语法的一部分
意思是ret相当于字典 0,0对应1 0,1对应2 0,2对应3 1,0对应a 1,1对应b 1,2对应c 
clock seconds命令以秒为单位返回当前系统的时间。
clock format能将整形时间值转换出包括时间,日期,时区、星期等信息。%m与%A分别代表了时间的分钟值与其对应的星期。
regsub -all { +} $var { } var
将变量var中所有出现的一个空格字符以上的空格串替换成单个空格
regsub 命令基于正则表达式完成字符串匹配和替换,不改变原变量,-all表示替换所有匹配的字符,“+”表示一个或一个以上
list a,b,c  语法正确  只有一个值 叫a,b,c
list “a,“b”,c” 语法不正确,引号内部是会把引号识别成命令的语法,需要使用"\"进行转义才可以在引号内部使用引号字符。
正则表达式——定位符
1. ^  匹配以^后面的字符开始的字符串。
2. $  匹配以$前面的字符结束的字符串。
3. \b 匹配单词边界(即从单词靠近空格的地方开始查找),查找匹配\b后或者前面字符的单词。
4. \B 匹配非单词边界(即从单词中查找),查找匹配含有某个字符的单词,该字符不在开始也不在结束。
break命令用于跳出循环体
循环里面的if语句里有break 就是满足if条件就退出循环。
正则命令——regexp
regexp ?switches? exp str ?matchVar? ?subMatchVar subMatchVar ...?

判断正则表达式exp是否匹配部分或全部字符串str,如果匹配返回1,否则返回0。如果在str后面指定了其他参数,则视为变量的名称,其中保存的是str中匹配exp的部分。matchVar保存的是所有匹配exp的字符串。
switches为开关,是以“-”开头的字符串,regexp支持的开头有:
-about	返回一个包含正则表达式信息的列表,而不是尝试匹配正则表达式。列表的第一个元素是子表达式数量。第二个元素是描述正则表达式的各种属性的属性名称列表。此开关主要用于调试。
-expanded	启用正则表达式扩展语法,表达式中的空白符和注释将被忽略。与嵌入式选项(?x)相同。
-indices	更改子matchVar、subMatchVar中存储的内容。不再存储str中匹配的字符,而是存储一个列表其中包含匹配的字符串在string中的起始和结束位置。
-line	开启行敏感匹配。此选项相当于同时指定-linestop和-lineanchor选项。与嵌入式选项(?n)相同。
-linestop	与嵌入式选项(?p)相同。
-lineanchor	与嵌入式选项(?w)相同。
-nocase	忽略大小写
-all	使正则表达式在字符串中尽可能多地匹配,返回找到的匹配项的总数。如果指定了matchVar、subMatchVar,那么只会保存最后匹配的信息。
-inline	将命令结果以列表形式返回,而不是替换到matchVar、subMatchVar变量中,所以当使用此开关时不能指定matchVar、subMatchVar变量。如果与-all一起使用,则会将每次的匹配结果都追加到列表中。
-start index	指定匹配正则表达式的字符串str的起始位置。index的取值与string index中索引取值方式相同。使用此开关时,“^”不再匹配行开头,\A则匹配index开始的str子串的开头。
--	标记开关结束。后面的参数将被视为exp,即使它以-开头。


regexp { ([0-9]+) ([a-z]+)} " there are 26 files in the directory." str1 str2 str3

puts " $str1,$str2,$str3"

结果26 files,26,files
([0-9]+) *([a-z]+)表示匹配26 files,然后赋值给$str1、$str2和$str3分别为26 files、26和files
正则命令-regsub
regsub ?switches? exp str subSpec ?varName?
基于正则表达式匹配执行替换。将正则表达式exp与字符串str匹配,并将str复制到名为varName的变量中。如果未指定varName则返回str。在str复制的过程中,str中匹配exp的字符串将被subSpec替换。如果subSpec中包含&”或“\0”,则使用str中匹配exp的字符串替换“&”和“\0”。如果subSpec包含“\n”(n为1到9的整数),则使用str中与exp第n个圆括号匹配的字符串进行替换。可以通过在“&”、“\0”、“\n”和“\”前加反斜杠“\”来防止特殊转义。subSpec中使用反斜杠经常会影响Tcl解析器的反斜杠使用,所以如果subSpec中使用反斜杠,通常用大括号括起来。

如果regsub的参数以“-”开始,则视为开关,支持的开关如下:
-all	找到所有与exp匹配的字符串并对每个匹配项执行替换。如果不使用此开关,则只替换一个匹配的字符串。如果使用此开关则使用对应的匹配信息对每个替换出路“&”和“\n”序列。
-expanded	启用正则表达式扩展语法,与regexp相同。
-line	开启行敏感匹配,与regexp相同。
-linestop	与regexp相同。
-lineanchor	与regexp相同。
-nocase	匹配时不区分大小写,但是替换时subSpec使用未转换的字符串。
-start index	指定匹配正则表达式的字符串str的起始位置,与regexp相同。
--	标记开关结束。后面的参数将被视为exp,即使它以-开头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禾末飞雁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值