正则表格达式PPT示例讲解.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正则表格达式PPT示例讲解

* 附录: 1、贪婪和懒惰的表达式: 前面所有的限定词都可用“贪婪”来形容,正则表达式引擎将会尽可能地匹配更多的字符。当正则表达式引擎遇到一个重复字符时,只要表达式的特定成分允许,它将从左到右开始搜索。例如:\d*3将进行数字匹配,一只到没有更多的数字可匹配为止。获得了尽可能多的数字后,引擎将试图匹配3,如果找不到,或不能立即找到(因为它已经匹配了所有的数字),就从上一次匹配中删除一个字符并再做一次尝试,这个过程会一直重复,直到匹配到3为止,然后接着进行。从该例子可看出,只要指定了数量,引擎就会首先尽可能多的获得字符,然后当无法匹配一个字符时,才吝惜地把字符一次一个地释放掉。如下图\d*3,试图在“123456789fgfd”中匹配 每个决策点放在一个正则表达式引擎使用的内部栈中,这意味着一旦失败,引擎会返回到上一个决策点并进行下一次决策。 实例:匹配ISBN 1-861008-23-6 ^(\d[-]*){9}[\dxX]$ 解释:开头必须是一个数字,然后是0个或更多的连字符或任意个空字符,重复此序列至少8次(因为{9}是重复序列至少8次的一种简略表达),括号表示一个分组。最后一个符号表明可有一个数字,“x”或X。1-861-0008 236 Matches()将显示实际匹配的子串,当进行该函数操作时,将只出现一次匹配,匹配的是整个字符串,我们希望匹配从一行的开头进行,末尾结束,但只匹配了一次。 问题在于Regex引擎是贪婪的,而且它所实现的第一次匹配是有效的,它从行首开始,中间包含了一个或多个单词或非单词字符,并在行尾结束。问题是它匹配了过多的内容,包括中间的所有行,在这里,选项MultiLine是不相关的,问题在于贪婪的重复字符“+”。解决方法是使用非贪婪的重复指令,这里是“?” 修改表达式为 ^[\w\W]+?$ 选中MultiLine,表明文本多行 This is the first line. …………下一个匹配…………………………………………………………… This the second line. …………下一个匹配…………………………………………………………… The final line. …………下一个匹配…………………………………………………………… 修改后的表达式,从第一行开始,匹配行尾之前的所有字符,然后终止,虽然选项MultiLine规定,字符\W可匹配一个换行符,但当在其后加上字符“$”时,它就会终止。 何时使用懒惰匹配并没有严格的规定,但通常对于要搜索的字符却非常明确,观察指令所要匹配的对象,如果不匹配,就可以决定匹配是否为贪婪的,如果组合使用通配符和字符“。”,通常应使用非贪婪的匹配,否则在引擎向下一条正则表达式指令前,会匹配字符串中所有的剩余字符,然而懒惰匹配指令在下一条指令匹配失败之前只作尽可能少的尝试,它只有在找到匹配时才再次尝试,如果Regex引擎在使用一个懒惰的通配符时遇到一个不能匹配的字符,就会失败,返回觉得栈的上一个决策点。 使用贪婪和懒惰匹配的情况是不同的,需要考虑在字符串中将匹配多少字符,字符串共有多少字符,可能遇到多少重复的字符,继续看ISBN的例子: 修改为:1-861-008 236 ^(\d[-\s]*?){9}[\dxX]$ 这里匹配0,再匹配0个或多个空字符,首先从0开始,匹配例程的区别是,当遇到2个空字符时,它首先匹配第一个,但因为下一个要匹配的字符是数字,匹配将会失败,也就是说,如匹配了两个空字符,则因为没有更多的空字符,所以将使栈为空,从而没更多的决策点可选择,从性能方面看,贪婪式搜索常会提供更快的匹配速度,但因为它贪婪,也意味这开发人员可能无法得到期望的匹配结果,但是考虑这些运算符在建立表达式时所起的作用。自己该能做出明智的选择了。 * 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等 如果我们问那些UNIX系统的爱好者他们最喜欢什么,答案除了稳定的系统和可以远程启动之外,十有八九的人会提到正则表达式;如果我们再问他们最头痛的是什么,可能除了复杂的进程控制和安装过程之外,还会是正则表达式。那么正则表达式到底是什么?如何才能真正的掌握正则表达式并正确的加以灵活运用?下面将就此展开介绍,希望能够对那些渴望了解和掌握正则表达式的朋友有所帮助。 文本操作几乎无处不在,合理的处理文本可提高程序性能 没有正则表达式,最基本的电子邮件输入检查都麻烦,可能一个小小的有效性验证都需要写很多的代码 * * 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影

文档评论(0)

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

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

1亿VIP精品文档

相关文档