oracle正则表达式

1. 正则表达式规范

(1).匹配字符

字符类 匹配的字符 举 例
\d 从0-9的任一数字 \d\d 匹配 72, 但不匹配 aa 或 7a
\D 任一非数字字符 \D\D\D 匹配 abc, 但不匹配 123
\w 任一单词字符,包括A-Z,a-z,0-9和下划线 \w\w\w\w 匹配 Ab-2 ,但不匹配∑ £$%* 或 Ab_@
\W 任一非单词字符 \W 匹配@,但不匹配 a
\s 任一空白字符,包括制表符,换行符,回车符,换页符和垂直制表符 匹配在 HTML,XML 和其他标准定义中的所有传统空白字符
\S 任一非空白字符 空白字符以外的任意字符,如A%&g3;等
. 任一字符 匹配除换行符以外的任意字符除非设置了 MultiLine 先项
[…] 括号中的任一字符 [abc] 将匹配一个单字符 ,a,b 或 c.
[a-z] 将匹配从 a 到 z 的任一字符
[^…] 不在括号中的任一字符 [^abc] 将匹配一个 a 、 b 、 c 之外的单字符 , 可以 a,b 或 A 、 B 、 C
[a-z] 将匹配不属于 a-z 的任一字符 , 但可以匹配所有的大写字母


(2).重复字符

重复字符 含 义 举 例
{n} 匹配前面的字符 n 次 x{2}匹配xx,但不匹配x或xxx
{n,} 匹配前面的字符至少 n 次 x{2}匹配2个或更多的x,如xxx,xxx..
{n,m} 匹配前面的字符至少 n 次 , 至多 m 次。如果 n 为 ,此参数为可选参数 x{2,4}匹配xx,xxx,xxxx,但不匹配xxxxx
? 匹配前面的字符 次或 1 次,实质上也是可选的 x?匹配x或零个x
+ 匹配前面的字符 次或多次 x+匹配x或xx或大于0的任意多个x
* 匹配前面的字符 次或更多次 x*匹配0,1或更多个x


(3).定位字符

定位字符 描 述
^ 随后的模式必须位于字符串的开始位置,如果是一个多行字符串,则必须位于行首。对于多行文本(包含回车符的一个字符串)来说,需要设置多行标志
$ 前面的模式必须位于字符串的未端,如果是一个多行字符串,必须位于行尾
\A 前面的模式必须位于字符串的开始位置,忽略多行标志
\z 前面的模式必须位于字符串的未端,忽略多行标志
\Z 前面的模式必须位于字符串的未端,或者位于一个换行符前
\b 匹配一个单词边界,也就是一个单词字符和非单词字符中间的点。要记住一个单词字符是 [a-zA-Z0-9] 中的一个字符。位于一个单词的词首
\B 匹配一个非单词字符边界位置,不是一个单词的词首


(4).分组字符

分组字符 定 义 举 例
() 此字符可以组合括号内模式所匹配的字符,它是一个捕获组,也就是说模式匹配的字符作为最终设置了 ExplicitCapture 选项 ―― 默认状态下字符不是匹配的一部分 输入字符串为: ABC1DEF2XY
匹配 3 个从 A 到 Z 的字符和 1 个数字的正则表达式:( [A-Z]{3}\d )
将产生两次匹配: Match   1=ABC1;Match 2=DEF2
每次匹配对应一个组: Match1 的第一个组= ABC;Match2 的第 1 个组= DEF
有了反向引用,就可以通过它在正则表达式中的编号以及 C# 和类 Group,GroupCollection 来访问组。如果设置了 ExplicitCapture 选项,就不能使用组所捕获的内容


(5).字符簇: 

[[:alpha:]] 任何字母。

[[:digit:]] 任何数字。

[[:alnum:]] 任何字母和数字。

[[:space:]] 任何白字符。

[[:upper:]] 任何大写字母。

[[:lower:]] 任何小写字母。

[[:punct:]] 任何标点符号。

[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。


(6).优先级

转义符

(), (?:), (?=), [] 圆括号和方括号

*, +, ?, {n}, {n,}, {n,m} 限定符

^, $, anymetacharacter 位置和顺序

¦ “或”操作


2.常用函数

(1).regexp_like(expression, regexp)

返回值为一个布尔值。如果第一个参数匹配第二个参数所代表的正则表达式,那么将返回真,否则将返回假。


(2).regexp_instr(expression, regexp, startindex, times)

返回找到的匹配字符串的位置.


(3).regexp_substr(expression, regexp)

返回第一个字符串参数中,与第二个正则表达式参数相匹配的子字符串。


(4).regexp_replace(expression, regexp, replacement)

将expression中的按regexp匹配到的部分用replacement代替.


(5).REGEXP_COUNT (source_char, pattern [, position [, match_param]])

REGEXP_COUNT 返回pattern 在source_char 串中出现的次数。如果未找到匹配,则函数返回0。position 变量告诉Oracle 在源串的什么位置开始搜索。在开始位置之后每出现一次模式,都会使计数结果增加1。

match_param 变量支持下面几个值:

‘i’ 用于不区分大小写的匹配

‘c’ 用于区分大小写的匹配

‘n’ 允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符

‘m’ 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。

‘x’ 忽略空格字符。默认情况下,空格字符与自身相匹配。


3.示例:

(1).查找id为4位数的记录

select data_object_id,object_name from HH where regexp_like(data_object_id,'^[[:digit:]]{3}$');

select data_object_id,object_name from HH where regexp_like(data_object_id,'^\d{3}$');


(2).查找对象名包含英文和下划线的记录

select object_name from HH where regexp_like(object_name,'^[a-z|A-Z|_]*$')


(3).对象名以a或A开头的记录

select object_name from HH where regexp_like(object_name,'^[a|A]')


(4).查找对象名为全英文,并且以N结尾

select object_name from HH where regexp_like(object_name,'^[a-z|A-Z]*N$')


(5).查找以非数字开头的员工信息

select object_name from HH where regexp_like(object_name,'^[^\d]');


(6).查找对象名中第一个特殊字符的位置

select object_name,regexp_instr(object_name,'[^[:alnum:]]',1) from HH;


(7).从第三个字符开始,查找员工编号中第二个非数字字符的位置

select object_name,regexp_instr(object_name,'[^[:alnum:]]',3,2) from HH


(8).返回从第二个字符开始检索,并且对象名以L开头$结尾的子串

select object_name,regexp_substr(object_name,'L.*\$$',2) from HH;


(9).把对象名中所有非字母字符替换为“A”

select regexp_replace(object_name,'[^a-z|A-Z]','A') from HH;


(10).查询字符串中was的出现次数,忽略大小写。

select regexp_count ('THE PRO-NIECE WAS BORN TODAY, SO EXCITING!', 'Was', 1,'i') from dual;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15412087/viewspace-2199864/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15412087/viewspace-2199864/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值