oracle 正则表达分析说明与数字正则(1/2)
方括号表达示
方括号表达式 |
描述 |
[[: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;
end isnumber;