Oracle正则表达式中注意的问题_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|系统之家|纯净系统

您当前所在位置:首页数据库Oracle → Oracle正则表达式中注意的问题

Oracle正则表达式中注意的问题

时间:2015/6/28来源:绿色软件之家作者:网管联盟我要评论(0)

  在oracle 11g中,当在正则表达式中用了中括号时,某些符号会匹配不了,如[\s\d],要用类似于[[:digit:][:blank:]]才能匹配成功,以下是我测试的例子:

  1 --中括号中的内容为一杠及空格([- ]),匹配成功,结果为:SA01-2345 6789 0123 4567 8900

  2 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  3 'SA\d{2}[- ]\d{4}[- ]\d{4}[- ]\d{4}[- ]\d{4}[- ]\d{4}|SA\d{22}',

  4  1, 1,'i')) as Reg_Str FROM dual;

  5

  6 --中括号中的内容为([-[:blank:]]),匹配成功,结果为:SA01-2345 6789 0123 4567 8900

  7 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  8 'SA\d{2}[-[:blank:]]\d{4}[-[:blank:]]\d{4}[-[:blank:]]\d{4}[-[:blank:]]\d{4}[-[:blank:]]\d{4}|SA\d{22}',

  9  1, 1,'i')) as Reg_Str FROM dual;

  10

  11 --如果将中括号换成小括号,匹配成功,结果为:SA01-2345 6789 0123 4567 8900

  12 SELECT to_char(REGEXP_SUBSTR('SA01  -  2345 6789 0123 4567 8900',

  13 '(SA)?\d{2}(\s|-)\d{4}(\s|-)\d{4}(\s|-)\d{4}(\s|-)\d{4}(\s|-)\d{4}|(SA)?\d{22}',

  14  1, 1,'i')) as Reg_Str FROM dual;

  15

  16 --中括号中的内容为([-[:digit:][:blank:]]),匹配成功,结果为:SA01-2345 6789 0123 4567 8900

  17 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  18 '(SA)?[-[:digit:][:blank:]]{22,50}',

  19  1, 1,'i')) as Reg_Str FROM dual;

  20

  21 --中括号中的内容为([-\d[:blank:]]),匹配失败,结果为空

  22 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  23 '(SA)?[-\d[:blank:]]{22,50}',

  24  1, 1,'i')) as Reg_Str FROM dual;

  25

  26 --中括号内容如下,匹配失败,结果为空

  27 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  28 '(SA)?[-\d\s]{22,50}',

  29  1, 1,'i')) as Reg_Str FROM dual;

  30

  31 --中括号内容如下,匹配失败,结果为空

  32 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  33 '(SA)?[-\d ]{22,50}',

  34  1, 1,'i')) as Reg_Str FROM dual;

  35

  36 --中括号中的内容为([-\s]),匹配失败,结果为空

  37 SELECT to_char(REGEXP_SUBSTR('SA01-2345 6789 0123 4567 8900',

  38 'SA\d{2}[-\s]\d{4}[-\s]\d{4}[-\s]\d{4}[-\s]\d{4}[-\s]\d{4}|SA\d{22}',

  39  1, 1,'i')) as Reg_Str FROM dual;

  明白原因的麻烦在下面评论,谢谢!

关键词标签:Oracle,正则表达式

相关阅读

文章评论
发表评论

热门文章 Oracle中使用alter table来增加,删除,修改列Oracle中使用alter table来增加,删除,修改列oracle中使用SQL语句修改字段类型-oracle修oracle中使用SQL语句修改字段类型-oracle修使用低权限Oracle数据库账户得到管理员权限使用低权限Oracle数据库账户得到管理员权限Oracle对user的访问控制Oracle对user的访问控制

相关下载

人气排行 ORACLE SQL 判断字符串是否为数字的语句Oracle中使用alter table来增加,删除,修改列的语法ORACLE和SQL语法区别归纳(1)oracle grant 授权语句如何加速Oracle大批量数据处理Oracle删除表的几种方法ORACLE修改IP地址后如何能够使用Oracle 10g创建表空间和用户并指定权限