- 浏览: 790894 次
- 性别:
- 来自: 广州
文章分类
最新评论
正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。
正则表达式中常用到的元数据(metacharacter)如下:
^ 匹配字符串的开头位置。
$ 匹配支付传的结尾位置。
* 匹配该字符前面的一个字符0次,1次或者多次出现。例如52*oracle 可以匹配 5oracle,52oracle,522oracle,5222oracle等等。
+ 匹配该字符前面的一个字符1次或者多次出现。例如52+oracle 可以匹配 52oracle,522oracle,5222oracle等等
? 匹配该字符前面的一个字符0次或1次。例如52?oracle 只能匹配5oracle,52oracle等等
{n} 匹配一个字符串n次,n为正整数。例如:hel{2}o 所匹配的是hello
{n,m} 匹配一个字符串至少n次,至多m次。其中n和m都是整数。
. 匹配除了null之外的任何单个字符串
(pattern) 这个是用来匹配指定模式的一个子表达式
x|y 匹配x或者y,其中x和y是一个或者多个字符
[abc] 匹配括号中的任意一个字符。例如:[ab]bc可以匹配abc和bbc
[a-z] 匹配指定范围内的任意字符串。例如[A-G]hi可以匹配Ahi至Ghi
[::]指定一个字符类,可以匹配该类中的任意字符 这里的字符类包括:
[:alphanum:] 可以匹配字符0-9、A-Z、a-z
[:alpha:]可以匹配字符A-Z、a-z
[:blank:]可以匹配空格或者tab键
[:digit:]可以匹配数字 0-9
[:gragh:]可以匹配非空字符
[:punct:]可以匹配. , ” ‘等标点符号。
[:upper:]可以匹配字符A-Z
[:lower:]可以匹配字符a-z
匹配选项:
字符 功能
c 匹配时区分大小写
i 匹配时不区分大小写
m 源字符串为多行匹配
n .可匹配任何换行符
函数:
1、REGEXP_LIKE
是LIKE语句的正则表达式版本
语法:REGEXP_LIKE(源字符串, 匹配表达式[,匹配选项])
例子:
SELECT product_name FROM oe.product_information WHERE regexp_like (product_name, 'SS[PS]/[VS]');
SS[PS]/[VS]匹配:SSP / V 、SSP / S 、 SSS / V 、 SSS / S
2、REGEXP_INSTR
返回源字符串中首次匹配正则表达式的起始位置
语法:REGEXP_INSTR(srcstr, pattern [, position [, occurrence
[, return_option [, match_option]]]])
srcstr:源字符串
pattern:正则表达式
position:搜索开始位置
occurrence:返回第几个匹配项
return_option:返回选项,0表示开始位置,1表示返回匹配的结束位置
match_option:匹配选项
例子:
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 1, 0, 'i') RESULT FROM dual; --返回5
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 1, 1, 'i') RESULT FROM dual; --返回9
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 2, 0, 'i') RESULT FROM dual; --返回28
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 2, 1, 'i') RESULT FROM dual; --返回32
--返回try或trying或tried或tries的位置
SELECT regexp_instr('We are trying to make the subject easier.',
'tr(y(ing)?|(ied)|(ies))') resultnum
FROM dual;
3、REGEXP_SUBSTR
返回源串中匹配正则表达式的子字符串
语法:SUBSTR(srcstr, pattern [, position
[, occurrence [, match_option]]])
srcstr:源字符串
pattern:正则表达式
position:搜索的开始位置
occurrence:返回第几个匹配的字符串
match_option:匹配选项
例子:
--返回 , Redwood Shores,
SELECT regexp_substr('500 Oracle Parkway, Redwood Shores, CA', ',[^,]+,') RESULT
FROM dual;
--返回http://www.oracle.com/
SELECT regexp_substr('Go to http://www.oracle.com/products and click on database',
'http://([[:alnum:]]+\.?){3,4}/?') RESULT
FROM dual;
--匹配try或trying或tried或tries
SELECT regexp_substr('We are trying to make the subject easier.',
'tr(y(ing)?|(ied)|(ies))')
FROM dual;
--返回sidval
SELECT regexp_substr('system/pwd@orabase:1521:sidval', '[^:]+', 1, 3) RESULT FROM dual;
--返回Three
SELECT regexp_substr('One|Two|Three|Four|Five', '[^|]+', 1, 3) FROM dual;
4、REGEXP_REPLACE
用执行字符串替换源文本中与正则表达式匹配的字符串
语法:REGEXP_REPLACE(srcstr, pattern [,replacestr [, position
[, occurrence [, match_option]]]])
srcstr:源字符串
pattern:正则表达式
replacestr:新的字符串
position:搜索起始位置
occurrence:第几个匹配项
match_option:匹配选项
例子:
--返回George Mc Govern
SELECT regexp_replace('George McGovern', '([[:lower:]])([[:upper:]])', '\1 \2') city
FROM dual;
正则表达式中常用到的元数据(metacharacter)如下:
^ 匹配字符串的开头位置。
$ 匹配支付传的结尾位置。
* 匹配该字符前面的一个字符0次,1次或者多次出现。例如52*oracle 可以匹配 5oracle,52oracle,522oracle,5222oracle等等。
+ 匹配该字符前面的一个字符1次或者多次出现。例如52+oracle 可以匹配 52oracle,522oracle,5222oracle等等
? 匹配该字符前面的一个字符0次或1次。例如52?oracle 只能匹配5oracle,52oracle等等
{n} 匹配一个字符串n次,n为正整数。例如:hel{2}o 所匹配的是hello
{n,m} 匹配一个字符串至少n次,至多m次。其中n和m都是整数。
. 匹配除了null之外的任何单个字符串
(pattern) 这个是用来匹配指定模式的一个子表达式
x|y 匹配x或者y,其中x和y是一个或者多个字符
[abc] 匹配括号中的任意一个字符。例如:[ab]bc可以匹配abc和bbc
[a-z] 匹配指定范围内的任意字符串。例如[A-G]hi可以匹配Ahi至Ghi
[::]指定一个字符类,可以匹配该类中的任意字符 这里的字符类包括:
[:alphanum:] 可以匹配字符0-9、A-Z、a-z
[:alpha:]可以匹配字符A-Z、a-z
[:blank:]可以匹配空格或者tab键
[:digit:]可以匹配数字 0-9
[:gragh:]可以匹配非空字符
[:punct:]可以匹配. , ” ‘等标点符号。
[:upper:]可以匹配字符A-Z
[:lower:]可以匹配字符a-z
匹配选项:
字符 功能
c 匹配时区分大小写
i 匹配时不区分大小写
m 源字符串为多行匹配
n .可匹配任何换行符
函数:
1、REGEXP_LIKE
是LIKE语句的正则表达式版本
语法:REGEXP_LIKE(源字符串, 匹配表达式[,匹配选项])
例子:
SELECT product_name FROM oe.product_information WHERE regexp_like (product_name, 'SS[PS]/[VS]');
SS[PS]/[VS]匹配:SSP / V 、SSP / S 、 SSS / V 、 SSS / S
2、REGEXP_INSTR
返回源字符串中首次匹配正则表达式的起始位置
语法:REGEXP_INSTR(srcstr, pattern [, position [, occurrence
[, return_option [, match_option]]]])
srcstr:源字符串
pattern:正则表达式
position:搜索开始位置
occurrence:返回第几个匹配项
return_option:返回选项,0表示开始位置,1表示返回匹配的结束位置
match_option:匹配选项
例子:
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 1, 0, 'i') RESULT FROM dual; --返回5
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 1, 1, 'i') RESULT FROM dual; --返回9
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 2, 0, 'i') RESULT FROM dual; --返回28
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 2, 1, 'i') RESULT FROM dual; --返回32
--返回try或trying或tried或tries的位置
SELECT regexp_instr('We are trying to make the subject easier.',
'tr(y(ing)?|(ied)|(ies))') resultnum
FROM dual;
3、REGEXP_SUBSTR
返回源串中匹配正则表达式的子字符串
语法:SUBSTR(srcstr, pattern [, position
[, occurrence [, match_option]]])
srcstr:源字符串
pattern:正则表达式
position:搜索的开始位置
occurrence:返回第几个匹配的字符串
match_option:匹配选项
例子:
--返回 , Redwood Shores,
SELECT regexp_substr('500 Oracle Parkway, Redwood Shores, CA', ',[^,]+,') RESULT
FROM dual;
--返回http://www.oracle.com/
SELECT regexp_substr('Go to http://www.oracle.com/products and click on database',
'http://([[:alnum:]]+\.?){3,4}/?') RESULT
FROM dual;
--匹配try或trying或tried或tries
SELECT regexp_substr('We are trying to make the subject easier.',
'tr(y(ing)?|(ied)|(ies))')
FROM dual;
--返回sidval
SELECT regexp_substr('system/pwd@orabase:1521:sidval', '[^:]+', 1, 3) RESULT FROM dual;
--返回Three
SELECT regexp_substr('One|Two|Three|Four|Five', '[^|]+', 1, 3) FROM dual;
4、REGEXP_REPLACE
用执行字符串替换源文本中与正则表达式匹配的字符串
语法:REGEXP_REPLACE(srcstr, pattern [,replacestr [, position
[, occurrence [, match_option]]]])
srcstr:源字符串
pattern:正则表达式
replacestr:新的字符串
position:搜索起始位置
occurrence:第几个匹配项
match_option:匹配选项
例子:
--返回George Mc Govern
SELECT regexp_replace('George McGovern', '([[:lower:]])([[:upper:]])', '\1 \2') city
FROM dual;
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1249Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1111RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1193分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1406BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1586--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1115表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1628About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8500转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2945insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30941. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2922LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6453ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1449I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5654用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1402Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1409Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2741RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3075空间RESUMABLE操作 转 Oracle从9i开始 ... -
oracle 创建视图 with check option
2012-12-13 23:14 1549我们来看下面的例子: create or replace vi ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1513闪回事务查询有别于闪回查询的特点有以下3个: (1) ...
相关推荐
全英oracle正则表达式参考手册 Oracle Regular Expressions Pocket Reference is part tutorial and part quick-reference. It's suitable for those who have never used regular expressions before, as well as ...
Oracle Database 作为业界领先的数据库产品之一,在其10g版本中引入了对正则表达式(Regular Expression, RE)的支持,这为数据管理和查询带来了更大的灵活性和效率。正则表达式是一种用于文本模式匹配的强大工具,...
正则表达式(Regular Expression)是一种强大的文本处理工具,它是一种模式匹配语言,用于在文本中查找、替换或提取符合特定规则的字符串。在多种编程语言中,如Perl、Java、JavaScript、C#、PHP、Python、Ruby、Tcl、...
正则表达式(Regular Expression),简称regex或regexp,是一种用于模式匹配的强大工具,广泛应用于字符串搜索和替换场景。在ORACLE的PL/SQL环境中,正则表达式被集成到其函数库中,为数据库管理员和开发人员提供了...
- 正则表达式(Regular Expression)是一种模式,用于匹配字符串中的一系列字符序列。 - Java中的正则表达式主要通过`java.util.regex`包来实现,包括`Pattern`、`Matcher`和`PatternSyntaxException`等类。 2. *...
正则表达式(Regular Expression)是一组用于匹配字符串中字符组合的模式。这种模式描述了一组字符串的共同特征,可以用来查找特定模式的文本或替换文本中的某些部分。 #### 0.2 `java.util.regex`包是如何描述正则...
### Oracle正则表达式详解 正则表达式(Regular Expression)是一种强大的文本处理工具,在数据库查询、文本编辑和数据验证等方面发挥着重要作用。在Oracle数据库中,正则表达式被广泛应用于各种内置函数中,以增强...
### Oracle正则表达式基础知识详解 #### 一、Oracle正则表达式的概念及用途 在数据库管理和查询过程中,正则表达式(Regular Expression)是一种强大的工具,用于模式匹配和文本处理。Oracle数据库支持正则表达式...
正则表达式(Regular Expression)是一种用于模式匹配的字符串处理工具。它用于在文本中查找、替换或提取符合特定模式的字符串。正则表达式在各种编程语言和文本编辑器中都有广泛的应用,如在Java、JavaScript中,...
最后,正则表达式(Regular Expression)是一种模式匹配工具,用于字符串操作,如搜索、替换和验证。在多数编程语言中,包括Java和JavaScript,都有内建的正则表达式API。Java的`java.util.regex`包提供了`Pattern`...
Oracle正则表达式提供了一种强大的方式来识别文本体中的模式。模式描述了需要识别的文本外观,它可以是相当简单的(例如描述任何三个字母组成的单词),也可以是非常复杂的(例如描述电子邮件地址)。Oracle正则...
### Oracle正则表达式知识点详解 #### 一、正则表达式基础概念 **正则表达式(Regular Expression)**是一种强大的文本处理工具,能够帮助我们实现字符串的搜索与替换等操作。在Oracle数据库中,正则表达式主要...
Jakarta ORO,全称是Oracle Regular Expressions for Java,是由Apache软件基金会开发的一个Java正则表达式库。它是对Java内置的正则表达式功能的扩展,提供了更丰富的功能和更高的性能。Jakarta ORO在Java社区中...
- Oracle官方文档:提供了详细的API参考和正则表达式语法介绍。 - Java Regex Tester:在线工具,方便测试和调试正则表达式。 - Stack Overflow:解答关于Java正则表达式的问题和疑难。 通过上述内容,我们可以...
最后,正则表达式(Regular Expression,简称regex或regexp)是模式匹配工具,用于在文本中查找、替换或提取特定模式的字符串。在编程和数据分析中,正则表达式是一个强大的工具,可以用于验证输入、提取数据、查找...
正则表达式(Regular Expression)通过一套特定的语法来定义字符串的匹配模式,允许我们灵活地搜索、替换或提取符合特定规则的数据。 首先,我们要了解正则表达式中的元字符。元字符在正则表达式中具有特殊含义,...