显示该文档阅读器需要flash player的版本为10.0.124或更高!
- 关 键 词:

文档介绍
★★★正则表达式专题★★★
下面我会陆续给出正则表达式使用过程中涉及到的方方面面,已完成 。
1、何谓正则表达式
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符
串”是否符合这个特征,即一段字符串的模式。比如,表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b'
”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
正则表达式的功能非常强大,打个比方,比如在关系数据库中,SQL语言的地位是显赫的,功能
是强大的,那么在字符串处理这个领域,正则表达式可以和SQL语言在关系数据库中扮演的角色相媲
美。从我本人从事多年的软件****实践中可以感觉到,正则表达式是值得每一个从事计算机相关工作
的人去学习、掌握,我们可以从中受惠。
正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。
(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方
便。(3)用来替换,比普通的替换更强大。(4)split字符串。
正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人
感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先
后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而
这部分特有的功能并不是我们首先要理解的。
平时的****,常常在Java和.NET平台下进行,这两个平台都提供了相应的正则表达式引擎,用起
来感觉也很好。在VBA的****中,尽管Excel中提供了很多的内置函数,帮助我们解决一些字符串处理
相关的问题,但对有些情况,用内置的函数或者编程来解决,常常会感觉到力不从心或者非常繁琐,
而用正则表达式来解决,却变得非常简单。所有我们在这里主要学习如何在VBA中使用正则表达式。
2、相关工具
工欲善其事,必先利其器,这是我们在使用正则表达式需要注意的地方,我们做任何事情,若善于利
用一些有用的辅助工具,常常可以达到事半功倍的效果。那么在使用正则表达式的时候也是一样,我
们需要一些辅助工具来帮助我们更快、更好地完整任务。我在使用了多种正则表达式辅助****工具
后,经过综合地比较、评价,最终锁定的一款利器,堪比关羽手中的“青龙偃月刀”,所向披靡。
这款利器就是 RegexBuddy,相关介绍参见 ****.regexbuddy****,这是一款共享工具,功能
上没有限制,但只能用7天,要money的,需要注册,不过大家在网上找regexbuddy 2.3.2 full
1
version。
另外,在今年8月份,对于当时最新的版本 3.0.3已被本人一不小心crack了,想用的可以给我发邮
件,linuxyf@g****il****,邮件中要注明(Office精英俱乐部)。
下面我们粗略地看一下RegexBuddy有哪些主要功能:
1、可以很容易地创建你想要的正则表达式。
2、可以帮助我们清楚地理解别人写的正则表达式的含义。
3、可以用测试字符串或者测试文件验证正则表达式是否合乎要求。
4、自动生成对应各种编程语言的程序代码段,我们只需要写出符****要求的正则表达式,对应编
程语言的代码段立刻可以生成,这一点非常的方便。
5、有一个可复用的正则表达式库,放置的都是一些经典的、常用的正则表达式供我们所用。
从上面的主要功能介绍我们可以看出,RegexBuddy绝对是我们处理正则表达式的不二选择,是
一款出色的正则表达式伴侣式工具,郑重推荐大家使用。
3、正则表达式规则------字符
3.1 普通字符
字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符****,都是"普通字符"。表达
式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹
配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能
不同)
举例2:表达式 "bcd",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容
是:"bcd";匹配到的位置是:开始于1,结束于4。
3.2 特殊字符
因为我们不总是做简单搜索,所以需要保留一些字符用作特殊用途。有11个字符有特殊的含义,
分别是:"[", "\","^","$",".","|","?","*","+","(" 和")"。 这些特殊字符我们通常称作元字
符。
如果你想把它们作为一个普通字符来使用,需要在这些符****之前加一个转义字符"\",比如,如果
你想匹配"1+1=2",正确的模式应该是"1\+1=2",不然,加****"+"就有了特殊的含义。注
意,"1+1=2",其中的加****不带转义字符,但这也是一个有效的正则表达式,所以在程序执行的时候不
会有错误,但它不会匹配"1+1=2",因为特殊字符"+",它将会在"123+111=234"字符串中,匹
配"111=2"。
3.3 不能显示的字符
2
模式串中可以使用一些不不能显示的字符,如:用 \t 来匹配一个 tab 字符 (ASCII 0x09), \r 代表回车
(0x0D) , \n 代表换行 (0x0A). 注意windows操作系统的文本文件中,用 \r\n 分割行,而UNIX 操作系
统中使用\n.
4、正则表达式引擎的内部工作机制
了解正则表达式引擎的内部工作机制将有助于你更好地驾驭正则表达式,高效、简洁书写合理的正则
表达式来完成任务。
有两种类型的引擎:文本导向(text-directed)引擎和正则导向(regex-directed)引擎。Jeffrey Friedl把它
们称作DFA和NFA引擎。本文谈到的是正则导向引擎。因为一些非常有用的特性,如“惰性”量词(lazy
quantifiers)和反向引用(backreferences),只能在正则导向的引擎中实现, 毫不意外这种引擎是目前最
流行的引擎。
你可以轻易分辨所使用的引擎是哪一种,若反向引用或“惰性”量词被实现,则可以肯定你使用的是正则
导向引擎。你可以作如下测试:将正则表达式<>应用到字符串“regex not”。如果匹
配的结果是regex,则是正则导向引擎。如果结果是regex not,则是文本导向引擎。
正则导向的引擎总是返回最左边的匹配
这是非中重要的一点:即使在后边可能发现一个“更好”的匹配,正则导向的引擎也总是返回最左边的匹
配。
当把<>应用到“He captured a catfish for his cat”,引擎先比较<>和“H”,结果失败了。于
是引擎再比较<>和“e”,也失败了。直到第四个字符,<>匹配了“c”。<>匹配了第五个字
符。到第六个字符<>没能匹配“p”,也失败了。引擎再继续从第五个字符重新检查匹配性。直到第
十五个字符开始,<>匹配上了“catfish”中的“cat”,正则表达式引擎急切的返回第一个匹配的结
果,而不会再继续查找是否有其他更好的匹配。
5、字符类或者字符集
字符类(也称为字符集)是由一对方括****“[]”括起来的字符集合。使用字符集,正则引擎可以只匹配多
个字符中的一个。如果你想匹配一个“a”或一个“e”,使用<<[ae]>>。使用<>匹配gray或
grey。在你不确定你要搜索的字符是采用美国英语还是英国英语时特别有用。一个字符集只匹配一个字
符,<>将不会匹配graay或graey。字符集中的字符顺序无关。
可以使用连字符“-”定义一个字符范围作为字符集。<<[0-9]>>匹配0到9之间的单个数字。可以使用不
3
止一个范围。<<[0-9a-fA-F] >>匹配单个的十六进制数字,并且大小写不敏感。也可以结合范围定义
与单个字符定义。<<[0-9a-fxA-FX]>>匹配一个十六进制数字或字母X。再次强调一下,字符和范围定
义的先后顺序对结果没有影响。
字符集的一些应用
查找一个可能写错的单词,比如<> 或 <>。
查找程序语言的标识符,<>。(*表示重复0或多次)
查找C风格的十六进制数<<0[xX][A-Fa-f0-9]+>>。(+表示重复一次或多次)
反字符集
在左方括****“[”后面紧跟一个尖括****“^”,将会对字符集取反。结果是字符集将匹配任何不在方括****中的
字符。不像“.”,取反字符集是可以匹配回车换行符的。
需要记住的很重要的一点是,取反字符集必须要匹配一个字符。<
关于本文
本文标题:正则表达式专题 链接地址:http://www.topstudy.com.cn/zhuanye/it/582.html
上一篇:详解强大的SQL注入工具——SQLMAP
下一篇:熊掌公开课第四期演讲内容
上一篇:详解强大的SQL注入工具——SQLMAP
下一篇:熊掌公开课第四期演讲内容
相关专题推荐
理论力学
英语试题
年会致辞
年会预算
年会游戏
年会台词
年会流程
年会方案
年会策划
毕业论文
毕业设计
推广计划
年会总结
线性代数
自动控制原理
工作计划
宏观经济学
通信原理
宏观经济
经济学原理
物流管理
创业计划书
测试用例
商业计划书
机械制造技术
机械制图
推广方案
招商方案
网络推广
SEM营销
活动策划
营销方案
营销案例
英语六级
考研
Android
Axure
C语言
Swift
产品经理
软件需求
托福考试
小学数学
小学英语
小学语文
日语
考研英语
剑桥英语
年会案例
性格培养
推广整体方案
策划方案
年会节目
开店知识
开店技巧
分析报告
申论
简历模板
求职信模板
执业药师
面试技巧
实习报告
安全生产
网页编程