TCL中的正则表达式用法

TCL中的正则表达式用法

ID:39468719

大小:37.50 KB

页数:4页

时间:2019-07-04

TCL中的正则表达式用法_第1页
TCL中的正则表达式用法_第2页
TCL中的正则表达式用法_第3页
TCL中的正则表达式用法_第4页
资源描述:

《TCL中的正则表达式用法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、TCL中的正则表达式主要是两条命令:(1)      regexp?switches?expstring?matchVar??subMatchVarsubMatchVar...?在字符串中使用正则表达式匹配。(2)      regsub?switches?expstringsubSpec?varName?在字符串中基于正则表达式的替换介绍一下常用的几个switches:-all在字符串中进行全部匹配或者替换,会返回匹配或者替换的总次数。-nocase将字符串中的大写都当成小写看待。-indices存在子匹配变量中不再是字符,而是index。--表示后面不再是switches,

2、而是正则表达式的模式了,即使后面紧接着是-。例子:(bin)29%sete1{[zhou1020]}[zhou1020](bin)30%regexp{[([a-z]+)([0-9]+)]}$e1matchstringsub1sub21(bin)31%puts$matchstring[zhou1020](bin)32%puts$sub1zhou(bin)33%puts$sub21020下面解释一下:Matchstring表示用正则表示式匹配的所有字符串;Sub1表示正则表达式中的第一个子表达式(就是小括号里面的正则表达式,在这里就是([a-z]+))匹配的字符串;Sub2表示

3、正则表达式中的第二个子表达式(就是小括号里面的正则表达式,在这里就是([0-9]+))匹配的字符串;如果加上-indices,得到的是字符串的索引。(bin)34%regexp-indices{[([a-z]+)([0-9]+)]}$e1matchstringsub1sub21(bin)35%puts$matchstring09(bin)36%puts$sub114(bin)37%puts$sub258一些需要注意的地方:1.        –表示后面是pattern,不再是switches了;2.        regsub只能替换第一个匹配的;如果要全部替换,需要加上-

4、all选项;3.        在expect中使用正则表达式:Expect–re“a*”:当看见-re选项,就知道后面是正则表达式,这时的*表示匹配0或者多次。就是可以匹配空字符串,a,aa,aaa……注意Expect“a*”与上面的区别:默认是globalpattern模式,相当于expect–gl“a*”,这时*表示任何一个字符。这时匹配aa,ab,ac……。4.        []的两种用法:(1)      表示里面是命令(2)      用在正则表达式里面,表示里面是一个范围。如[0-9],[a-zA-Z]5.        ^的两种用法(1)   表示从头开始匹配

5、(2)   用在正则表达式的[]里,表示取反。如[^0-9]表示除了数字0-9之外的。6.        Quantifiers量词*:表示0到多次+:表示一到多次?:表示0到一次。7.        一个容易弄错的地方.*:表示匹配任何字符串。(因为.表示任何字符,而*表示0次或者多次,故*:表示匹配任何字符串)同时,*是贪婪的,它希望得到最长的字符串。如果想关掉贪婪属性,可以在后面加?。.*\n:表示尽可能多的,以回车换行符作为结束。看下面的例子:(bin)44%seta{111122223333}111122223333(bin)45%(bin)45%regexp.*

6、$amatch1(bin)46%puts$match111122223333(bin)可以看出,它在遇到第一行结束的回车换行并没有结束,而是贪婪的匹配到了最后一个回车换行。如果只想得到第一行的1111,可以关掉*的贪婪属性。(bin)47%regexp.*?$amatch1(bin)48%puts$match1111(bin)也可以用regexp"[^]*"$amatch达到目的。(bin)49%regexp"[^]*"$amatch1(bin)50%puts$match1111(bin)51%8.        backslash转义字符tab键并不是

7、有几个空格组成的。匹配单个+:两个\经过tcl解释得到一个\,\+经过正则表达式转义得到+:(bin)51%regexp"\+"{+}e11(bin)52%puts$e1+如果使用大括号,只使用一个\即可:(bin)53%regexp{+}{+}e11(bin)54%puts$e1+(bin)55%匹配单个\:使用中括号需要2个\,使用双引号,需要4个\.(bin)55%regexp{\}"\"e11(bin)56%puts$e1(bin)57%regexp"\\""\"1(

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

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

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