正则表达式及用例分析.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
 正则表达式及用例分析 * 第一部分:正则表达式基础 * 什么是正则表达式 正则表达式(Regular expression,简称Regex)。是一种工具,和他其他工具一样,他是人们为了解决某一类专门的问题而发明的。要想理解正则表达式及其功能,最好的办法是了解他可以解决什么样的问题。 简单的说,正则表达式是一些用来匹配和处理文本的字符串。 正则表达式作为一门单独的语言,并不是一种完备的程序设计语言,它甚至不能单独运行。它更像是内置于其他语言或软件产品的“迷你语言”。现在几乎所有的语言或工具都支持正则表达式。 支持正则表达式的语言:C#、JavaScript、PHP、JSP、ASP、PERL、JAVA、VB、.NET、COLDFUSION、PYTHON等等。 * 先看一个列子 在一篇英文小说中查找单词”Hi” ? \bHi\b ‘\b’是正则表达式中规定的一个特殊字符(听说:它叫做元字符),它标记单词的开头和结尾,也就是分界。 注意:虽然通常英文的单词是由空格或标点符号或换行来分隔的,但是\b并不匹配这些单词分隔符中的任何一个,它只匹配一个位置。 * 先看一个列子 如果你要找的是hi后面不远处跟着一个Lucy 呢? \bhi\b.*\bLucy\b . :元字符。匹配除了换行符意外的任意字符。 * :元字符。代表的是数量(而不是字符,更不是位置)。它指定 *前面的表达式可以连续重复出现任意次以使整个表达式得到匹配。 先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词 * 再看一个例子 怎样验证一个电话号码是否合法? 电话号码如:0100531 要匹配数字需要引入一个新元字符:\d 匹配任意数字 \d:匹配一个任意数字 \d*:匹配任意多个任意的数字 我们怎样用正则表达式匹配上面的电话号码呢? 0\d\d-\d\d\d\d\d\d\d\d - 010优化:0\d{2}-\d{8} 0\d\d\d- \d\d\d\d\d\d\d\d - 0531优化:0\d{3}-\d{8} 继续优化:0\d{2,3}-\d{8} * 测试正则表达式 由于正则表达式难于读写,所以有必要使用工具来测试正则表达式的正确性。 在不同的环境下正则表达式的一些细节有差异,我们讨论的是C#下正则表达式的行为,所以,推荐使用.Net下的工具Regex Tester.首先你确保已经安装了.Net Framework2.0,然后下载Regex Tester. 这是个绿色软件,下载完后打开压缩包,直接运行RegexTester.exe就可以了。 * 元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 理解以下正则表达式 \ba\w*\b ^\d{5,12}$ \b\w{6}\b * 字符转义 问题:如果要在文本中查找元字符本身,应该怎样匹配? 如: www\.sina\.com D:\project d:\\project 注意: \元字符:取消元字符的特殊含义 * 重复 理解以下正则表达式 Windows\d+ Windows后面跟1个或更多数字 13\d{9} 13后面跟9个数字(中国的手机号) ^\w+ 一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置) 表2.常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 * 字符类 如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办? 很简单,把他们方括号里就OK了! [aeiou] 我们可以指定一个匹配范围: [0-9] 匹配所有的数字 [a-zA-Z] 匹配所有的字母 [0-1a-zA-Z] 匹配所有的数字和字母 试分析下面的正则表达式匹配什么? \(0\d{2}[\)-]?\d{8} * 反义 有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义 试写出与之匹配的正则 表达式 匹配不包含空白字符的字 符串 \S+ 用尖括号括起来的以a开头 的字符串 a[^]+ 表3.常用的反义代码 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符

文档评论(0)

2266685ss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档