使用正则表达式
目的
在本教程中,您将学习如何使用正则表达式支持。Oracle 数据库 10g
中引入了这个新特性。
所需时间
大约 30 分钟
主题
本教程包括下列主题:
查看屏幕截图
将光标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)
注意:您还可以在下面的步骤中将光标放在每个单独的图标上,仅加载和查看与该步骤相关的屏幕截图。
概述
在 Oracle 数据库 10g
中,可以使用 SQL 和 PL/SQL 实现正则表达式支持。正则表达式是一种描述搜索和处理简单模式和复杂的方法。在基于 Web
的应用程序的逻辑中字符串处理和搜索占有很大比重。其用途从简单的任务(例如,在指定文本中查找单词 San
Francisco)到复杂的任务(例如,提取文本中的所有
URL),再到更复杂的任务(例如,查找第二个字符是元音的所有单词)。
Oracle 数据库 10g
引入了对正则表达式的支持。该实现符合用于 UNIX 的可移植操作系统 (POSIX) 标准(由电气和电子工程师协会 (IEEE)
颁布)的 ASCII 数据匹配语意和语法。Oracle 的多语言功能使运算符的匹配功能超过了 POSIX 标准。
在与 SQL 一起使用时,正则表达式可以对 Oracle
数据库中存储的任何数据执行强大的搜索和处理。可以使用此特性轻松解决在其他情况下很难通过编程解决的问题。
前提条件
开始学习本教程之前,您应已经:
在 Oracle 数据库 10g 中使用正则表达式
匹配机制
如果有一个字符串 aabcd,并指定了一个
a(b|c)d 搜索,则将搜索后跟 b 或
c,接着是 d 的 a。
正则表达式:a(b|c)d
匹配的字符串:aabcd
a
a
b
c
d
说明
结果
*
搜索 a
并成功
匹配
*
搜索 b 但失败
不匹配
*
搜索 c
但失败,重置并继续搜索
不匹配
*
搜索 a
并成功
匹配
*
搜索 b 并成功;将
c 记忆为一个选择项
匹配
*
搜索 d 但失败
不匹配
*
搜索作为上次记忆的选择项的 c
但失败,重置并继续搜索
不匹配
*
搜索 a
但失败,重置并继续搜索
不匹配
*
搜索 a
但失败,重置并继续搜索
不匹配
*
搜索 a
但失败,重置并继续搜索
不匹配
a(b|c)d 不匹配给定的字符串
aabcd。
要在 SQL 或 PL/SQL 中实现正则表达式支持,需要使用一组新函数。这些函数是:
函数名
说明
REGEXP_LIKE
类似于 LIKE
运算符,但执行正则表达式匹配而不是简单的模式匹配
REGEXP_IN