oracle正则表达式ITeye - 威尼斯人

oracle正则表达式ITeye

2019年03月28日15时57分26秒 | 作者: 鸿风 | 标签: 正则表达式,匹配,表达式 | 浏览: 2869

oracle正则表达式 ORACLE中的支撑正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功用类似
2,REGEXP_INSTR :与INSTR的功用类似
3,REGEXP_SUBSTR :与SUBSTR的功用类似
4,REGEXP_REPLACE :与REPLACE的功用类似
它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
可是它们运用POSIX 正则表达式替代了老的百分号(%)和通配符(_)字符。
POSIX 正则表达式由规范的元字符(metacharacters)所构成:
^ 匹配输入字符串的开端方位,在方括号表达式中运用,此刻它表明不接受该字符调集。
$ 匹配输入字符串的完毕方位。假如设置了 RegExp 目标的 Multiline 特点,则 $ 也匹
配 \n 或 \r。
. 匹配除换行符之外的任何单字符。
? 匹配前面的子表达式零次或一次。
+ 匹配前面的子表达式一次或屡次。
* 匹配前面的子表达式零次或屡次。
| 指明两项之间的一个挑选。比如^([a-z]+|[0-9]+)$表明一切小写字母或数字组合成的
字符串。
( ) 符号一个子表达式的开端和完毕方位。
[] 符号一个中括号表达式。
{m,n} 一个精确地呈现次数规模,m= 呈现次数 =n,{m}表明呈现m次,{m,}表明至少
呈现m次。
\num 匹配 num,其间 num 是一个正整数。对所获取的匹配的引证。
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
各种操作符的运算优先级
\转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 方位和次序
|
*/
创立表
create table fzq
(
id varchar(4),
value varchar(10)
);
数据刺进
insert into fzq values
(1,1234560);
insert into fzq values
(2,1234560);
insert into fzq values
(3,1b3b560);
insert into fzq values
(4,abc);
insert into fzq values
(5,abcde);
insert into fzq values
(6,ADREasx);
insert into fzq values
(7,123 45);
insert into fzq values
(8,adc de);
insert into fzq values
(9,adc,.de);
insert into fzq values
(10,1B);
insert into fzq values
(10,abcbvbnb);
insert into fzq values
(11,11114560);
insert into fzq values
(11,11124560);
regexp_like
查询value中以1最初60完毕的记载而且长度是7位
select * from fzq where value like 1____60;
select * from fzq where regexp_like(value,1....60);
查询value中以1最初60完毕的记载而且长度是7位而且全部是数字的记载。
运用like就不是很好完成了。
select * from fzq where regexp_like(value,1[0-9]{4}60);
也能够这样完成,运用字符集。
select * from fzq where regexp_like(value,1[[:digit:]]{4}60);
查询value中不是纯数字的记载
select * from fzq where not regexp_like(value,^[[:digit:]]+$);
查询value中不包含任何数字的记载。
select * from fzq where regexp_like(value,^[^[:digit:]]+$);
查询以12或许1b最初的记载.不区别大小写。
select * from fzq where regexp_like(value,^1[2b],i);
查询以12或许1b最初的记载.区别大小写。
select * from fzq where regexp_like(value,^1[2B]);
查询数据中包含空白的记载。
select * from fzq where regexp_like(value,[[:space:]]);
查询一切包含小写字母或许数字的记载。
select * from fzq where regexp_like(value,^([a-z]+|[0-9]+)$);
查询任何包含标点符号的记载。
select * from fzq where regexp_like(value,[[:punct:]]);




正则表达式用于字符串处理、表单验证等场合,有用高效。现将一些常用的表达式搜集于此,以备不时之需。

用户名:/^[a-z0-9_-]{3,16}$/

暗码:/^[a-z0-9_-]{6,18}$/

十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/

电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

HTML 标签:/^ ([a-z]+)([^ ]+)*(?: (.*) \/\1 |\s+\/ )$/

Unicode编码中的汉字规模:/^[u4e00-u9fa5],{0,}$/

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包含汉字在内):[^\x00-\xff]
评注:能够用来核算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:能够用来删去空白行

匹配HTML符号的正则表达式: (\S*?)[^ ]* .*? /\1 | .*? /
评注:网上撒播的版别太糟糕,上面这个也仅仅能匹配部分,关于杂乱的嵌套符号仍旧力不从心

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:能够用来删去行首行尾的空白字符(包含空格、制表符、换页符等等),十分有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很有用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上撒播的版别功用很有限,上面这个根本能够满意需求

匹配帐号是否合法(字母最初,答应5-16字节,答应字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很有用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配方式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开端

匹配中国大陆邮政编码:[1-9]\d{5}(?!\d)
评注:中国大陆邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国大陆的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理很多数据时有用,详细应用时留意批改

匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或许下划线组成的字符串

来历:
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    oracle正则表达式ITeye

    正则表达式,匹配,表达式
  • 2

    (转)in 和 existITeye

    分区,查询,一个
  • 3

    SQL句子的优化办法ITeye

    优化,例如,句子
  • 4
  • 5

    Oracle 存储进程的运用ITeye

    存储,进程,参数
  • 6

    Oracle替换表空间ITeye

    空间,新表,包括
  • 7
  • 8
  • 9
  • 10