TCL脚本语言7正则表达式

TCL脚本语言7正则表达式

ID:37325775

大小:365.12 KB

页数:12页

时间:2019-05-21

TCL脚本语言7正则表达式_第1页
TCL脚本语言7正则表达式_第2页
TCL脚本语言7正则表达式_第3页
TCL脚本语言7正则表达式_第4页
TCL脚本语言7正则表达式_第5页
资源描述:

《TCL脚本语言7正则表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、TCL、Python和软件测试自动化65正则表达式首先要说的是,正则表达式本身就能够写成一本书,而且这样的书已经存在了。正则表达式是一种匹配模式,用来匹配部分特定的字符串。正则表达式在脚本语言中使用非常广泛,对于TCL脚本有其如此,因为TCL中一切都是字符串,而正则表达式是处理字符串的利器。TCL中处理正则表达式的命令有两个:regexp?switches?expstring?matchVar??subMatchVarsubMatchVar...?regsub?switches?expstringsubSpec?varName?regexp用来对字符串

2、进行正则表达式的查找匹配;regsub则是对字符串进行正则表达式的查找和替换操作。下面是两个例子:%regexp-inline{0x[a-zA-Z0-9]+}"inta=0x22FF;"0x22FF%regsub-all{(.+)=(.+)}"a=100"{2=1}100=a%第一个例子,找出其中所有的十六进制数值;第二个,找出等号字符前后的串,并且前后互换。可以看到,这里最重要的就是正则表达式的语法。下面我们结合例子一一讲述。正则表达式语法正则表达式有着严格的语法规则,总结如下三条:1.正则表达式是用管道线符号“

3、”连接的一个或者多个分支(bra

4、nch)组成;只要字符串能够匹配上其中任意一个分支,就算匹配整个表达式;2.每一个分支是由零个或多个约束(constraints)或者量化修饰的原子(atom)顺序连接而成;3.每一个原子包含了一个基本原子,后面跟着0个或者多个数量修饰串;如果没有数量修饰,那么就表示匹配一个原子;数量限定数量限定符号跟在原子后面,表示匹配前面的原子重复次数。可以有如下几种:1.*:表示匹配前面零个或者多个原子,等价于{0,};2.+:表示匹配前面的一个或者多个原子,等价于{1,};3.?:表示匹配前面的零个或者一个原子,等价于{0,1};作者:雷雨后Email:lei

5、yuhou010@gmail.comTCL、Python和软件测试自动化664.{m}:表示匹配前面原子恰好m次重复;5.{m,}:表示匹配前面原子至少m次重复;6.{m,n}:表示匹配前面原子在m和n次之间重复,包括m次和n次;7.*?、+?、??、{m}?、{m,}?、{m,n}?:表示非贪婪匹配。默认情况下正则表达式是贪婪的,往前尽量多的匹配;在数量限定后面加上?之后,表示尽量少的匹配。下面是几个简单的例子:%regexp-inline-all{ba?c}{bcbacbaaac}=>bcbac%regexp-inline{ba*c}{bcbacb

6、aaac}=>bc%regexp-inline-all{ba*c}{bcbacbaaac}=>bcbacbaaac%regexp-inline-all{ba+c}{bcbacbaaac}=>bacbaaac%regexp-inline-all{ba{2,}c}{bcbacbaaac}=>baaac#下面是贪婪和非贪婪的差别:%regexp-inline-all{ba{1,}?}{bcbacbaaac}=>baba%regexp-inline-all{ba{1,}}{bcbacbaaac}=>babaaa%%regexp-inline-all{ba

7、a+

8、}{bcbacbaaac}=>babaaa可以看到,ba*c可以匹配bc、bac、baaac等;ba+c则能匹配bac、baac等;非贪婪则是尽可能少的进行匹配。“

9、”的优先级是最低的,例如abc

10、d+,匹配abc或者d、dd;但是不匹配abd。原子原子有如下几种格式:原子含义(re)用括号括起来的一个正则表达式,匹配re。用来记录子串,作为报告结果;(?:re)意义和(re)类似,匹配re,但是不被记录作为子串来报告结果;()匹配一个空字符串;记录下来作为报告结果(?:)意义同上,匹配空串,但是不被记录维子串;[chars]方括号表达式,下面有详细的

11、论述;.匹配任意的单个字符;kk是一个非数字和字母的字符;表示原始字符,例如\表示反斜线;cc是字母或者数字,表示转义符;例如d表示所有的数字;{后面跟数字,表示数量限定;否则表示字符{本身;x单个字符,表示匹配这个字符本身;例如:作者:雷雨后Email:leiyuhou010@gmail.comTCL、Python和软件测试自动化67%regexp-inline-all{([a-z]+)=([0-9]+)}{a=1000;b=200}{a=1000}a1000{b=200}b200上面的正则表达式([a-z]+)=([0-9]+)。分别取出字

12、符串中的赋值语句字符串,并且取出变量名和值;这里用到了简单的方括号语法[a-z]表示所有的小写

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。