正则表达式及在tcl应用_第1页
正则表达式及在tcl应用_第2页
正则表达式及在tcl应用_第3页
正则表达式及在tcl应用_第4页
正则表达式及在tcl应用_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

作者:XXX部门:测试部日期:2011-11-162011-1-1正则表达式及在TCL中应用1目录基本概念典型实例演示及分析第五节tcl中的应用一regexp贪婪与非贪婪模式常用正则表达式集第六节tcl中的应用二regsub第一节正则表达式的基本概念正则表达式:指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串(公式)。用处:用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。组成:有一些普通字符和一些元字符组成(包括汉字)。普通字符包括大小写的字母和数字;元字符是具有特殊含义的字符。元字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符..匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,可使用”(.|\n)”的模式.^匹配输入字符串的开始位置。如:^hello匹配“helloworld”,但不匹配“worldhello”。$匹配输入字符串的结束位置。如:hello$匹配“worldhello”,但不匹配“helloworld”*匹配前面的子表达式零次或多次。如:zo*能匹配“z”“zo””zoo”。等价于{0,}。+匹配前面的子表达式一次或多次。如:zo+能匹配“zo””zoo”。等价于{1,}。?匹配前面的子表达式零次或一次。如:zo*能匹配“z”“zo”。等价于{0,1}。{n}n为非负整数。匹配确定的n次。o{2}匹配”zoo”中的“oo”,但不能匹配”zo”中的“o”。{n,}n为非负整数。至少匹配n次。o{2}匹配“zooo”中的“ooo”,但不能匹配”zo”中的“o”。{n,m}m,n均为非负整数,且n<=m。最少匹配n次且最多匹配m次。?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串.例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。[];[^];[c1-c2];[xyz]匹配方括号中x,y,z的任意一个字符;[a-z]匹配任意一个小写字符。[^xyz]不匹配方括号中x,y,z的任意一个字符;同理[^a-z];第二节常用正则表达式集第二节常用正则表达式集元字符描述(sub_exp)()之间的表达式被定义为“组”,并且将匹配这个表达式的字符保存到一个临时区域,可被单独引用。(在之后讲的regexp中的substring用到。)x|y

匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。\b

匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。\B

匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。\d

匹配一个数字字符。等价于[0-9]。\D

匹配一个非数字字符。等价于[^0-9]。\f匹配一个换页符。等价于\x0c和\cL。\r匹配一个回车符。等价于\x0d和\cM。\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。\S匹配任何非空白字符。等价于[^\f\n\r\t\v]。\w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。

第三节贪婪与非贪婪模式贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为。贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配。非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。属于贪婪模式的量词,也叫做匹配优先量词,包括:“{m,n}”、“{m,}”、“?”、“*”和“+”。例子一:aa<div>test1</div>bb<div>test2</div>cc正则表达式一:<div>.*</div>匹配结果一:<div>test1</div>bb<div>test2</div>正则表达式二:<div>.*?</div>匹配结果二:<div>test1</div>例子二:csdnfddabckjdsfjabc

正则表达式一:csdn.{1,100}abc

匹配结果一:csdnfddabckjdsfjabc正则表达式二:csdn.{1,100}?abc

匹配结果二:csdnfddabc

第四节典型实例演示及分析

匹配整数:^-?[1-9]\d*$

匹配浮点数:^-?([1-9]\d*\.\d*|0\.\d*)

匹配中文字符:[\u4e00-\u9fa5]

匹配双字节字符(包括汉字):[^\x00-\xff]匹配国内电话号码:\d{3}-\d{8}|d{4}-\d{7}匹配Email:^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+分析:”^“

行首.“([a-zA-Z0-9_-])+”

匹配a-z或A-Z或0-9或_或-任意字符一次或多次,也可以用\w。@

非元字符,匹配字符本身

“\.”

匹配字符”.”,由于.为元字符,需要通过\转义。第五节tcl中的应用一regexp

-indices

返回值变成了对应的匹配子串在整个字符串中所处位置的索引。

在正则表达式的概念中提到其用处为检索或替换,我们这节讲的regexp正是实现其检索功能。语法:regexp?switches?expstring?matchVar??subMatchVarsubMatchVar..?参数switches:

-nocase

匹配时不考虑大小写。-expanded

启用扩展的规则,将空格和注释忽略掉。第五节tcl中的应用一regexp-line

启用行敏感匹配。正常情况下^和$只能匹配缓冲区起始和末尾,对于缓冲区内部新的行是不能匹配的,通过这个开关可以使缓冲区内部新的行也可以被匹配。它相当于同时使用-lnestop和-lineanchor开关。

-about

返回正则表达式本身的信息,而不是对缓冲区的解析。返回的是一个list,第一个元素是子表达式的个数,第二个元素开始存放子表达式的信息。第五节tcl中的应用一regexp-all

进行最大可能的匹配。返回匹配的个数。匹配字串为最后一次匹配。-startindex

强制从偏移为index开始的位置进行匹配。使用这个开关之后,^将不能匹配行起始位置。如果使用了-indices开关,则indices表示绝对位置,index表示输入字符的相对位置。-lineanchor

改变^和$的匹配行为,使可以匹配缓冲区内部的新行。-linestop

启动行结束敏感开关。使[^和.可以匹配缓冲区内部的新行。第五节tcl中的应用一regexp--表示这后面再没有开关(switchs)了,即使后面有以‘-‘开头的参数也被当作正规表达式的一部分。-inline直接以list的方式返回matchVal和submatchVal值.无需指定matchVal和submatchVal变量。-nocase

匹配时不考虑大小写

参数matchVal:匹配字符串被赋予此变量。参数subMatchVar:匹配子正则表达式(“(sub_exp)”)的字串。第五节tcl中的应用一regexp第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论