- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle中的正则表达式
第21章 Oracle中的正则表达式 在各种编程语言中,正则表达式都有着广泛的应用。Oracle 10g及以后的版本中也支持正则表达式,并提供了非常实用的函数。本章首先讲述正则表达式的基本知识,最后讲述Oracle中的正则表达式函数。本章的主要内容包括: 正则表达式基础知识; Oracle中的正则表达式函数。 21.1 正则表达式简介 正则表达式,就是以某种模式来匹配一类字符串。一旦概括了某类字符串,那么正则表达式即可用于针对字符串的各种相关操作。例如,判断匹配性,进行字符串的重新组合等。正则表达式提供了字符串处理的快捷方式。 22.1.1 正则表达式与通配符 正则表达式是一个模式,正则表达式可以看做一个模糊的字符串匹配;而通配符也可以看做模糊的字符串匹配。 正则表达式与通配符虽有相似之处,但却有着本质的区别。正则表达式中不仅存在着代表模糊字符的特殊字符,而且存在着量词等修饰字符,使得模式的控制更加灵活和强大。另外,通配符的使用一般是在特定的环境下,例如Windows的查询功能等,在不同的环境下,通配符有可能不同。而正则表达式,不但广泛应用于各种编程语言,而且在各种编程语言中,保持了语法的高度一致性。 22.1.2 正则表达式与编程语言 在各种编程语言中,可以说,正则表达式是无处不在的。正则表达式在各种编程语言中高度统一,都遵循一致的语法。因此,一旦熟悉了一种编程语言中的正则表达式,那么,可以直接应用于其他编程语言。编程语言同时也是正则表达式的载体,没有编程语言,正则表达式的作用将无从发印 21.2 正则表达式基础知识 正则表达式简单易学。本节将从以下几方面讲述正则表达式的基础知识。 元字符和普通字符; 量词; 字符转义与字符类; 字符组; 正则表达式分支。 21.2.1 元字符和普通字符 编程语言与普通文本文件的区别在于,编程语言中定义了保留字。这些保留字,都被编译器当做特殊命令来处理。其余才被当做普通字符串进行处理。 正则表达式的定义是以字符为基本单位的。这些字符也可以分为“保留字符”与普通字符两类,分别称为元字符和普通字符。元字符是指在正则表达式中表示特殊含义的字符。正则表达式中的元字符包括“.”、“\”、“?”、“*”、“+”、“|”、“{” 、“}”、“^”、“$”、“[”、“]”。 例如,元字符中的“.”用于匹配任何单字符(换行符除外);“\” 可以与普通字符组合来表示特殊字符,也可与元字符组合使用来获得元字符的原义字符。元字符“^”和“$”用于匹配输入字符串的开始和结束。默认情况下,这里的开始和结束是指整个字符串的开头和结尾。 普通字符是指除元字符外的所有Unicode字符。普通字符匹配其本身。例如,字符“a”代表原义字符“a”。 21.2.2 量词 量词用来指定量词的前一个字符出现的次数。量词的形式主要有“?”、“*”、“+”、“{}”。 元字符“?”作为量词出现,用来匹配0个或1个字符。例如A?,表示0个或1个字符“A”。 元字符“*”作为量词出现,用来匹配0个或多个字符。例如A*,表示0个或多个字符“A”。 元字符“{”和“}”同时出现,用来匹配指定个数的字符,其形式有三种情况:A{3}表示匹配三个字符“A”;A{3,}表示匹配三个或更多个字符“A”;A{3,5}表示匹配3到5个字符“A”。 量词在用于匹配字符串时,默认遵循贪婪原则。贪婪原则是指,尽可能多地匹配字符。例如字符串“Function(p),(OK)”,如果使用正则表达式“\(.*\)”进行匹配,则得到字符串“(p),(OK)” ,而非“(p)”;若欲得到“(p)”,则必须取消量词的贪婪原则,此时只需要为量词后追加另外一个数量词“?”即可。如上面的正则表达式应该改为“\(.*?\)”。 21.2.3 字符转义与字符类 字符转义是指通过元字符“\”与其他字符进行组合。这里的“其他字符”包括了元字符和普通字符。 元字符在正则表达式中有特殊含义。如果需要使用其原义,则需要用到字符转义。字符转义使用字符“\”来实现。其语法模式为:“\”+元字符。例如,“\.”表示普通字符“.”; “\.doc”匹配字符串“.doc”;而普通字符“\”需要使用“\\”来表示。 21.2.4 字符组的使用 字符组是指将模式中的某些部分作为一个整体。这样,量词可以来修饰字符组,从而提高正则表达式的灵活性。例如,使用元字符和普通字符的组合,很难针对字符串“abc123abc123abc123”来归纳正则表达式。此时可以利用字符组来实现,相应的正则表达式可以表示为“(abc123)+”,表示连续的多个“abc123”组合。 字符组的另一个重要作用在于,许多编程语言中,可以利用“$1”、“$2”等来获取第一个、第二个字符组,即所谓的后向引用。在Ora
文档评论(0)