收藏 分享(赏)

matlab中正则表达式.ppt

上传人:11xg27ws 文档编号:4867999 上传时间:2019-01-18 格式:PPT 页数:15 大小:158.50KB
下载 相关 举报
matlab中正则表达式.ppt_第1页
第1页 / 共15页
matlab中正则表达式.ppt_第2页
第2页 / 共15页
matlab中正则表达式.ppt_第3页
第3页 / 共15页
matlab中正则表达式.ppt_第4页
第4页 / 共15页
matlab中正则表达式.ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、正则表达式,正则表达式,正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。 一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 正则表达式是非常复杂的,不要希望一次都掌握,理解正则表达式能做什么(字符串的匹配、字符串的提取、字符串的替换),掌握常用的正则表达式用法,以后用到再查就行。,元字符1,.:匹配任何单个字符。 Eg:正则表达式“f.y”能匹配如下字符串:“fly”、“fuy”、“f y”,但是不匹配“fuuy” :匹配括号中的任何一个字符。 Eg:正则表达式“bauig”匹配b

2、ug、big和bag,但是不匹配beg、baug。 可以在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式0-9可以匹配任何数字字符,这样正则表达式“a0-9c”等价于“a0123456789c”就可以匹配“a0c”、“a1c”、“a2c”等字符串; 还可以制定多个区间,例如“A-Za-z”可以匹配任何大小写字母,“A-Za-z0-9”可以匹配任何的大小写字母或者数字。,( ) :将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域 。改变优先级、定义提取组两个作用。| :将两个匹配条件进行逻辑“或”运算。 z|food 能匹配

3、“z“ 或 “food“。 (z|f)ood 则匹配 “zood“ 或 “food“。,*:匹配0至多个在它之前的子表达式,和通配符*没关系。 例如正则表达式“zo*”能匹配 “z” 、“zo”以及 “zoo”; + :匹配前面的子表达式一次或多次,和*对比(0到多次)。 例如正则表达式9+匹配9、99、999等。 “zo+”能匹配 “zo”以及 “zoo” ,不能匹配“z“。 ? :匹配前面的子表达式零次或一次。 例如,“do(es)?“ 可以匹配 “do“ 或 “does“ 。一般用来匹配“可选部分”。,n :匹配确定的 n 次。 例如,“e2” 不能匹配“bed”中的“e”,但是能匹配“

4、seed”中的两个“e”。 n, :至少匹配n次。 例如,“e2,”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。 n,m :最少匹配 n 次且最多匹配 m 次。 “e1,3”将匹配“seeeeeeeed”中的前三个“e”。, :匹配一行的开始。 例如正则表达式“regex”能够匹配字符串“regex我会用”的开始,但是不能匹配“我会用regex”。 另外一种意思:非! $ :匹配行结束符。 例如正则表达式“点名$” 能够匹配字符串“现在开始点名”的末尾,但是不能匹配字符串“点名啦”,简写表达式,注意这些简写表达式是不考虑转义符的,这里的就表示字符,而不是C#

5、字符串级别的,在C#代码中需要使用或者双重转义。 d:代表一个数字,等同于0-9 D:代表非数字,等同于0-9 s:代表换行符、Tab制表符等空白字符 S:代表非空白字符 w:匹配字母或数字或下划线或汉字,即能组成单词的字符 W:非w ,等同于w d:digital;s:space、w:word。大写就是“非”,.Net中的正则表达式1,正则表达式在.Net就是用字符串表示,这个字符串格式比较特殊,无论多么特殊,在C#语言看来都是普通的字符串, 正则表达式(Regular Expression)的主要类:Regex 常用的3种情况: 判断是否匹配:Regex.IsMatch(“字符串”,”正则

6、表达式”); 字符串提取:Regex.Match(“字符串”,“要提取的字符串的正则表达式”); 字符串提取(循环提取所有): Regex.Matches() 字符串替换:Regex.Replace(“字符串”,”正则”,”替换内容”);,Regex.IsMatch,Regex.IsMatch方法用于判断一个字符串是否匹配正则表达式。字符串匹配例子: Regex.IsMatch(“bbbbg“,“b.*g$“); Regex.IsMatch(“bg“, “b.*g$“); Regex.IsMatch(“gege“, “b.*g$“);,字符串匹配案例1,判断否是合法的邮政编码(6位数字)Reg

7、ex.IsMatch(“100830“,“0-96$“) Regex.IsMatch(“119“, “d6$“); 解释:由元字符定义得知“0-9”表示0到9的任意字符,“6”表示前面的字符匹配6此,因此“0-96”中的6表示对数字匹配6次。简写表达式得知“0-9”可以被“d”代替,所以第二种写法“d6”也是正确的。,字符串匹配案例2,判断一个字符串是不是身份证号码,即是否是15或18位数字。错误写法:Regex.IsMatch(“123456789123456789”, “d15|d18$”),表示15位数字开头或者18位数字结尾./匹配“以15位数字开始”或者“以18位数字结束”( | 的

8、优先级最低,最后执行)正确写法:Console.WriteLine(Regex.IsMatch(“0111111111111111“, “d15$|d18$“)或者“(d15|d18)$“,字符串匹配案例3,判断字符串是否为正确的国内电话号码,不考虑分机。 010-8888888或010-88888880或010xxxxxxx 0555-8888888或0555-88888888(区号-电话号) 10086、10010、95595、95599、95588(5位) 13888888888(11位都是数字)Regex.IsMatch(phoneNumber, “(d3,4-?d7,8)|(d5)|

9、(d11)$“);按照要求一个一个写,都用|连起来。注意:由于区号有时为010-xxxxxxx有时为010xxxxxxx,-可有可无,所以需要?,由于-表示一个区间,所以这里要转义-。最后不要忘记在所有|的最外层加一对(),字符串匹配案例4,判断一个字符串是否是合法的Email地址。一个Email地址的特征就是以一个字符序列开始,后边跟着“”符号,后边又是一个字符序列,后边跟着符号“.”,最后是字符序列Regex.IsMatch(““, “w+w+.w+$“); 括号中的任意字符,w字母、数字、下划线,+一到多个。由于.在正则表达式中有特殊的含义,因此对于真正想表达“.”则需要转移“.”。,字符串匹配练习,1、匹配IP地址,4段用.分割的最多三位数字。 192.168.54.77、333.333.333.333假设都是正确的。 2、判断是否是合法的日期格式“2008-08-08”。四位数字-两位数字-两位数字。 注意:元字符中的字符,如果想直接匹配的话都需要转移: . + ? + - * .,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报