zoukankan      html  css  js  c++  java
  • Oracle正则表达式中注意的问题

    在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  11,'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  11,'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  11,'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  11,'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  11,'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  11,'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  11,'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  11,'i')) as Reg_Str FROM dual;

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

  • 相关阅读:
    BZOJ 1016 最小生成树计数(矩阵树定理)
    sdoi2013 spring(hash+容斥)
    51nod 1301 集合异或和(DP)
    51nod 1576 Tree and permutation(树的重心+dfn序)
    BZOJ 4145 [AMPPZ2014]The Prices (状压DP)
    BZOJ 2260 商店购物(最小树形图)
    BZOJ 4006 [JLOI2015]管道连接(斯坦纳树+子集DP)
    BZOJ 2595 [Wc2008]游览计划(斯坦纳树)
    BZOJ 5180 [Baltic2016]Cities(斯坦纳树)
    51nod 1392 装盒子(费用流)
  • 原文地址:https://www.cnblogs.com/krisy/p/1647913.html
Copyright © 2011-2022 走看看