oracle正则表达⼩数点,oracle正则表达分析说明与数字正则⽅括号表达⽰
⽅括号表达式
描述
[[: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}
m和n是整数。它在⽂本中出给定⼦表达⽰的m到n次出现
{n,m}
匹配前⾯的字符串⾄少到n次,但不多于m次
c
查询操作区分⼤⼩写
i
查询操作不区分⼤⽔写
m
多⾏字符串上的查询,在源字符串包含多⾏时,该查询允许⽤(^)模式匹配字符串的开始n
通常匹配单个字符,也可以匹配新⾏
x
需要忽略正则表达⽰中的空格字符时,使⽤参数‘x’
a
匹配字符串⾸,⽽不是⾏⾸,因⽽多⾏字符串不能匹配每⼀⾏
d
匹配任意数字字符
d
匹配任意⾮数字字符
s
匹配任意空格字符
s
匹配任意⾮空格字符
w
匹配任意字符和数字。该字符和[:alnum:]之间的不同是w包括下划线字符
w
匹配任意⾮空字符串
*
通配符。出在⽂本中包含0或多次给定⼦表达式出现的记录
+
出在⽂本中包含1或多次给定⼦表达式出现的记录
出在⽂本中包含0次或1次给定⼦表达⽰出现的记录
.
匹配⽂本中的任意字符
^
锚。如果该字符后的表达式出现在⾏⾸,则匹配成功
$
锚。如果该字符后的表达式出现在⾏⾸,则匹配成功
|
分隔符,使⽤⽅法和or相同
(….)
分组⼦表达式
create or replace function isnumber(valid_str in varchar2)
return number
is
cursor valid_number is
select 1 from dual where regexp_like(valid_str ,'^[+-]?d+(.d)?d*$'); isnumber_ valid_number%rowtype;
begin
open valid_number;
fetch valid_number into isnumber_;
if (valid_number%found) then
close valid_number;
return 1;
else
close valid_number;
return 0;
end if;
regexp likeend isnumber;
看⼀下常⽤正则
正则表达式运算符和函数
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', '[[:alnum:]](([_.-+]?[[:alnum:]]+)*)@' ||
2 '([[:alnum:]]+)(([.-]?[[:alnum:]]+)*).([[:alpha:]]{2,})') regexp_substr
3 from dual;
regexp_substr
----------------------
feedback@plsqlbook
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_replace与replace函数类似,提供⼀种修改与所给正则表达式匹配的字符串的⽅法。作⽤包括纠正拼写错误、格式化输⼊输出的⽂本。
如电话号码的格式为: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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论