`

Oracle正则表达式的用法(转)

 
阅读更多

l        方括号表达示

方括号表达式

描述

[[:alnum:]]

字母和数字混合的字符

[[:alpha:]]

字母字符

[[:cntrl:]]

控制字符

[[:digit:]]

数字字符

[[:graph:]]

图像字符

[[:lower:]]

小写字母字符

[[:print:]]

打印字符

[[:punct:]]

标点符号字符

[[:space:]]

空格字符

[[:upper:]]

大写字母字符

[[:xdigit:]]

十六进制数字字符

 

l        元字符

元字符

描述

*

如果有前面字符串的0次以上出现时匹配

+

如果有前面字符串的1次以上出现时匹配

{m}

m是整数。它文本中找出给定子表达式的恰好m次出现

{n}?

前面的字符串只出现一次时匹配

{m,}

M是整数。它在文本中找出给定子表达示的至少m次出现

{n,}?

匹配前面的字符串至少n

{m,n}

Mn是整数。它在文本中找出给定子表达示的mn次出现

{n,m}

匹配前面的字符串至少到n次,但不多于m

c

查询操作区分大小写

i

查询操作不区分大水写

m

多行字符串上的查询,在源字符串包含多行时,该查询允许用(^)模式匹配字符串的开始

n

通常匹配单个字符,也可以匹配新行

x

需要忽略正则表达示中的空格字符时,使用参数‘X

\A

匹配字符串首,而不是行首,因而多行字符串不能匹配每一行

\d

匹配任意数字字符

\D

匹配任意非数字字符

\s

匹配任意空格字符

\S

匹配任意非空格字符

\w

匹配任意字符和数字。该字符和[:alnum:]之间的不同是\w包括下划线字符

\W

匹配任意非空字符串

*

通配符。找出在文本中包含0或多次给定子表达式出现的记录

+

找出在文本中包含1或多次给定子表达式出现的记录

找出在文本中包含0次或1次给定子表达示出现的记录

.

匹配文本中的任意字符

 ^

锚。如果该字符后的表达式出现在行首,则匹配成功

$

锚。如果该字符后的表达式出现在行首,则匹配成功

|

分隔符,使用方法和OR相同

(….)

分组子表达式

 

l        正则表达式运算符和函数

 

a)     REGEXP_SUBSTR

REGEXP_SUBSTR为指定字符串的一部分与正则表达式建立匹配。语法如下:

REGEXP_SUBSTR(source_string,

pattern,

start_position,

occurrence,

match_parameter)

其中source_string是必须的。可以是带引号的字符串或者变量。Pattern是用单引号引用的与正则表达式。Start_position指定了在字符串中的准确位置,默认值为1。Occurrence是一个选项,指定在源字符串匹配过程中相对其他字符串,哪个字符串应该匹配。最后,match_parameter也是一个选项,指定在匹配时是否区分大水写。

示例1

SQL> select regexp_substr('The zip code 80831 is for falcon, co','[[:digit:]]{5}' ) REGEXP_SUBSTR from dual;

 

REGEXP_SUBSTR

-------------

80831

 

示例2

SQL> select regexp_substr('The zip code 80831 is for falcon, co', '[[:alpha:]]{3,}', 1, 3) REGEXP_SUBSTR from dual;

 

REGEXP_SUBSTR

-------------

code

 

示例3

 

SQL> select regexp_substr('comments or questions - email feedback@plsqlbook.com', '[[:alnum:]](([_\.\-\+]?[[:alnum:]]+)*)@' ||

 2        '([[:alnum:]]+)(([\.-]?[[:alnum:]]+)*)\.([[:alpha:]]{2,})') REGEXP_SUBSTR

 3   from dual;

 

REGEXP_SUBSTR

----------------------

feedback@plsqlbook.com

 

 

b)     REGEXP_INSTR

REGEXP_INSTR返回与正则表达式匹配的字符和字符串的位置。如

 

SQL> select regexp_instr('The zip code 80831 is for falcon, co', '[[:digit:]]{5}') REGEXP_INSTR from dual;

 

REGEXP_INSTR

------------

         14

 

c)     REGEXP_REPLACE

REGEXP_REPLACEREPLACE函数类似,提供一种修改与所给正则表达式匹配的字符串的方法。作用包括纠正拼写错误、格式化输入输出的文本。

如电话号码的格式为:719-111-1111。使用REGEX_REPLACER的返回值是:

SQL> select regexp_replace('Reformat the phone number 719-111-1111 ...',

 2        '[1]?[-.]?(\(?[[:digit:]]{3}\)?)+[- .]?'

 3        || '([[:digit:]]{3})[- .]?([[:digit:]]{4})',

 4        ' (\1) \2-\3') regexp_replace

 5   from dual;

 

REGEXP_REPLACE

---------------------------------------------

Reformat the phone number (719) 111-1111 ...

S

d)     REGEXP_LIKE

REGEXP_LIKE运算符与LIKE运算符相似,但是功能更强大,因为它支持使用与此正则表达式与文本进行匹配。语法如下:

REGEXP_LIKE(source_string, pattern, match_parameter)

Source_string可以是文字字符串,如果前面例中的字符串,也可以是包含某些字符串的变量或列。Pattern是要进行匹配的正则表达式。Match_parameter用于指定在匹配时是否区分大小写。

SQL> select ename, job

 2   from emp

 3  where regexp_like(job, '(clerk|analyst)', 'i');

 

ENAME     JOB

---------- ---------

SMITH     CLERK

SCOTT     ANALYST

ADAMS     CLERK

JAMES     CLERK

FORD      ANALYST

MILLER    CLERK

分享到:
评论

相关推荐

    Oracle正则表达式详解(用法+实例)

    Oracle正则表达式详解,用法+实例。

    oracle 正则表达式用法

    oracle正则表达式是开发中 简洁代码的利器。

    oracle正则表达式regexp_like的用法详解

    本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介绍,需要的朋友参考下

    Oracle数据库正则表达式使用场景代码实例

    例如判断一个手机号码输入是否正确,如果使用Java、C或者其他语言进行字符串进行判断,也许写几十行代码都不一定能解决,而且漏洞百出,而使用正则表达式,一行代码则可轻易解决,下面是举例说明正则表达式的用法: ...

    Oracle中正则表达式的使用实例教程

    本文主要介绍了关于Oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍。 Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。 regexp_like 该...

    Oracle 总结的正则表达式带有详细的例子与解释

    Oracle 总结的正则表达式并带有详细的例子与解释 对应优化语句很有帮助更能提高效率。 包括: REGEXP_LIKE , REGEXP_REPLACE , REGEXP_INSTR , REGEXP_SUBSTR 。

    oracle_10g正则表达式_REGEXP_LIKE_用法

    oracle_10g正则表达式_REGEXP_LIKE_用法

    MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace、regexp进行正则表达式替换的用法。分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于“./uploads/110100_cityHotel_北京富豪华宾馆.jpg”这样的...

    PHP中的递归正则表达式用法分享

    什么时候会用到递归正则表达式呢? 当然是待匹配的字串中递归地出现某种模式时(貌似废话). 最经典的例子, 就是递归正则处理嵌套括号的问题了. 例子如下. 假设你的文本中包含了正确配对的嵌套括号. 括号的深度可以是...

    封装常用正则表达式的用法

    regexhelper.h 代码如下:#ifndef REGEX_HELPER_H_INCLUDE#define REGEX_HELPER_H_INCLUDE#include... /* * 是否包含匹配字符串 * @param: input 输入字符串 * @param:pattern 正则表达式 */ static bool IsMa

    [ASP]RegExp对象提供简单的正则表达式支持功能使用说明

     Set regEx = New RegExp ‘ 建立正则表达式。 regEx.Pattern = patrn ‘ 设置模式。 regEx.IgnoreCase = True ‘ 设置是否区分字符大小写。 regEx.Global = True ‘ 设置全局可用性。 Set ...

    Oracle查询优化改写技巧与案例2.zip

    第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...

    Oracle查询优化改写技巧与案例

    第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...

    oracle查询优化改写技巧与案例

    第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...

    Oracle查询优化改写 技巧与案例_高清带书签版本

    第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。 如果您是开发...

    oracle database 10g 完整参考手册part1

    第8章 正则表达式搜索 第9章 数值处理 第10章 日期:过去、现在及日期的差 第11章 转换函数与变换函数 第12章 分组函数 第13章 当一个查询依赖于另一个查询时 第14章 一些复杂的技术 第15章 更改数据:插入﹑更新﹑...

Global site tag (gtag.js) - Google Analytics