Oracle正则表达式学习.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle正则表达式学习

什么是正规表达式? ? 正规表达式由一个或多个字符型文字和/或元字符组成。在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式cat。它被读作字母c,接着是字母a和t,这种模式匹配cat、location和catalog之类的字符串。元字符提供算法来确定Oracle如何处理组成一个正规表达式的字符。当您了解了各种元字符的含义时,您将体会到正规表达式用于查找和替换特定的文本数据是非常强大的。 ? 验证数据、识别重复关键字的出现、检测不必要的空格,或分析字符串只是正规表达式的许多应用中的一部分。您可以用它们来验证电话号码、邮政编码、电子邮件地址、社会安全号码、IP地址、文件名和路径名等的格式。此外,您可以查找如HTML标记、数字、日期之类的模式,或任意文本数据中符合任意模式的任何事物,并用其它的模式来替换它们。 ? 用Oracle Database 10g使用正规表达式 ? 您可以使用最新引进的Oracle SQL REGEXP_LIKE操作符和REGEXP_INSTR、REGEXP_SUBSTR以及REGEXP_REPLACE函数来发挥正规表达式的作用。您将体会到这个新的功能如何对LIKE操作符和INSTR、SUBSTR和REPLACE函数进行了补充。实际上,它们类似于已有的操作符,但现在增加了强大的模式匹配功能。被搜索的数据可以是简单的字符串或是存储在数据库字符列中的大量文本。正规表达式让您能够以一种您以前从未想过的方式来搜索、替换和验证数据,并提供高度的灵活性。 ? 正规表达式的基本例子 ? 在使用这个新功能之前,您需要了解一些元字符的含义。句号(.)匹配一个正规表达式中的任意字符(除了换行符)。例如,正规表达式a.b匹配的字符串中首先包含字母a,接着是其它任意单个字符(除了换行符),再接着是字母b。字符串axb、xaybx和abba都与之匹配,因为在字符串中隐藏了这种模式。如果您想要精确地匹配以a开头和以b结尾的一条三个字母的字符串,则您必须对正规表达式进行定位。脱字符号(^)元字符指示一行的开始,而美元符号($)指示一行的结尾(参见表1)。因此,正规表达式^a.b$匹配字符串aab、abb或axb。将这种方式与LIKE2ù×÷·?提供的类似的模式匹配a_b相比较,其中(_)是单字符通配符。 ? 默认情况下,一个正规表达式中的一个单独的字符或字符列表只匹配一次。为了指示在一个正规表达式中多次出现的一个字符,您可以使用一个量词,它也被称为重复操作符。.如果您想要得到从字母a开始并以字母b结束的匹配模式,则您的正规表达式看起来像这样:^a.*b$。*元字符重复前面的元字符(.)指示的匹配零次、一次或更多次。LIKE操作符的等价的模式是a%b,其中用百分号(%)来指示任意字符出现零次、一次或多次。 ? 表2给出了重复操作符的完整列表。注意它包含了特殊的重复选项,它们实现了比现有的LIKE通配符更大的灵活性。如果您用圆括号括住一个表达式,这将有效地创建一个可以重复一定次数的子表达式。例如,正规表达式b(an)*a匹配ba、bana、banana、yourbananasplit等。 ? Oracle的正规表达式实施支持POSIX(可移植操作系统接口)字符类,参见表3中列出的内容。这意味着您要查找的字符类型可以非常特别。假设您要编写一条仅查找非字母字符的LIKE条件—作为结果的WHERE子句可能不经意就会变得非常复杂。 ? POSIX字符类必须包含在一个由方括号([])指示的字符列表中。例如,正规表达式[[:lower:]]匹配一个小写字母字符,而[[:lower:]]{5}匹配五个连续的小写字母字符。 ? 除POSIX字符类之外,您可以将单独的字符放在一个字符列表中。例如,正规表达式^ab[cd]ef$匹配字符串abcef和abdef。必须选择c或d。 ? 除脱字符(^)和连字符(-)之外,字符列表中的大多数元字符被认为是文字。正规表达式看起来很复杂,这是因为一些元字符具有随上下文环境而定的多重含义。^就是这样一种元字符。如果您用它作为一个字符列表的第一个字符,它代表一个字符列表的非。因此,[^[:digit:]]查找包含了任意非数字字符的模式,而^[[:digit:]]查找以数字开始的匹配模式。连字符(-)指示一个范围,正规表达式[a-m]匹配字母a到字母m之间的任意字母。但如果它是一个字符行中的第一个字符(如在[-afg]中),则它就代表连字符。 ? 之前的一个例子介绍了使用圆括号来创建一个子表达式;它们允许您通过输入更替元字符来输入可更替的选项,这些元字符由竖线(|)分开。 ? 例如,正规表达式t(a|e|i)n允许字母t和n之间的三种可能的字符更替。匹配模式包括如tan、ten、tin和Pakistan之类的字,但不包

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档