欢迎来到天天文库
浏览记录
ID:9002449
大小:110.50 KB
页数:9页
时间:2018-04-14
《在oracledatabase10g处理字符数据时使用正规表达式》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、在OracleDatabase10g处理字符数据时使用正规表达式OracleDatabase10g的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正规表达式,是一种用来描述文本模式的表示方法。很久以来它已在许多编程语言和大量UNIX实用工具中出现过了。 Oracle的正规表达式的实施是以各种SQL函数和一个WHERE子句操作符的形式出现的。如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能。已经对正规表达式很熟悉的读者可以了解如何在OracleSQL语言的环境中应用这种功能。 什么是正规表达式? 正规表达
2、式由一个或多个字符型文字和/或元字符组成。在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式cat。它被读作字母c,接着是字母a和t,这种模式匹配cat、location和catalog之类的字符串。元字符提供算法来确定Oracle如何处理组成一个正规表达式的字符。当您了解了各种元字符的含义时,您将体会到正规表达式用于查找和替换特定的文本数据是非常强大的。 验证数据、识别重复关键字的出现、检测不必要的空格,或分析字符串只是正规表达式的许多应用中的一部分。您可以用它们来验证电话号码、邮政编码、电子邮件地址、社会安全号码、IP地址、文件名和路径名等的格式。此外
3、,您可以查找如HTML标记、数字、日期之类的模式,或任意文本数据中符合任意模式的任何事物,并用其它的模式来替换它们。 用OracleDatabase10g使用正规表达式 您可以使用最新引进的OracleSQLREGEXP_LIKE操作符和REGEXP_INSTR、REGEXP_SUBSTR以及REGEXP_REPLACE函数来发挥正规表达式的作用。您将体会到这个新的功能如何对LIKE操作符和INSTR、SUBSTR和REPLACE函数进行了补充。实际上,它们类似于已有的操作符,但现在增加了强大的模式匹配功能。被搜索的数据可以是简单的字符串或是存储在数据库字符列中的
4、大量文本。正规表达式让您能够以一种您以前从未想过的方式来搜索、替换和验证数据,并提供高度的灵活性。 正规表达式的基本例子 在使用这个新功能之前,您需要了解一些元字符的含义。句号(.)匹配一个正规表达式中的任意字符(除了换行符)。例如,正规表达式a.b匹配的字符串中首先包含字母a,接着是其它任意单个字符(除了换行符),再接着是字母b。字符串axb、xaybx和abba都与之匹配,因为在字符串中隐藏了这种模式。如果您想要精确地匹配以a开头和以b结尾的一条三个字母的字符串,则您必须对正规表达式进行定位。脱字符号(^)元字符指示一行的开始,而美元符号($)指示一行的结尾(
5、参见表1:附表见第4页)。因此,正规表达式^a.b$匹配字符串aab、abb或axb。将这种方式与LIKE操作符提供的类似的模式匹配a_b相比较,其中(_)是单字符通配符。 默认情况下,一个正规表达式中的一个单独的字符或字符列表只匹配一次。为了指示在一个正规表达式中多次出现的一个字符,您可以使用一个量词,它也被称为重复操作符。.如果您想要得到从字母a开始并以字母b结束的匹配模式,则您的正规表达式看起来像这样:^a.*b$。*元字符重复前面的元字符(.)指示的匹配零次、一次或更多次。LIKE操作符的等价的模式是a%b,其中用百分号(%)来指示任意字符出现零次、一次或
6、多次。 表2给出了重复操作符的完整列表。注意它包含了特殊的重复选项,它们实现了比现有的LIKE通配符更大的灵活性。如果您用圆括号括住一个表达式,这将有效地创建一个可以重复一定次数的子表达式。例如,正规表达式b(an)*a匹配ba、bana、banana、yourbananasplit等。 Oracle的正规表达式实施支持POSIX(可移植操作系统接口)字符类,参见表3中列出的内容。这意味着您要查找的字符类型可以非常特别。假设您要编写一条仅查找非字母字符的LIKE条件—作为结果的WHERE子句可能不经意就会变得非常复杂。 POSIX字符类必须包含在一个由方括
7、号([])指示的字符列表中。例如,正规表达式[[:lower:]]匹配一个小写字母字符,而[[:lower:]]{5}匹配五个连续的小写字母字符。 除POSIX字符类之外,您可以将单独的字符放在一个字符列表中。例如,正规表达式^ab[cd]ef$匹配字符串abcef和abdef。必须选择c或d。 除脱字符(^)和连字符(-)之外,字符列表中的大多数元字符被认为是文字。正规表达式看起来很复杂,这是因为一些元字符具有随上下文环境而定的多重含义。^就是这样一种元字符。如果您用它作为一个字符列表的第一个字符,它代表一个字符列表的非。因此,[^[:di
此文档下载收益归作者所有