zoukankan      html  css  js  c++  java
  • [每日一题] OCP1z0-047 :2013-08-22 正则表达式---[^Ale|ax.r$]'

    正确答案:DE

     

    一、Oracle正则表达式的相关知识点

    '[^Ale|ax.r$]':

    ^:匹配行的开始字符

    $:匹配行的结束字符

    []:方括号表示指定一个匹配列表,该列表匹配列表中显示的任何表达式。

    [^]:同上面相反,非匹配列表表达工。

    .:匹配任意一个字符(除了NULL)

    |:替换元字符;结束第一个选项并开始下一个替换表达式

    [^Ale|ax.r$]'中^表示只匹配不在集合{'A','l','e','|','a','x','.','r','$'}中的字符, 此处的'|'、'.'、'$'只是表示普通的字符,而非匹配符。字符串: [Ale|ax.r$] 匹配Alex,Alax ,Alxer ,A,l,e,a.............

    不包含 A l e a x r的串,等效于[^Aleaxr],只要在串里面找到符合条件的字符(哪怕就一个)就算匹配。

    先来看一下答案:

    gyj@MYDB> with gyj_test as (
      2   select 'Alex' name from dual
      3   union all
      4   select 'Alax' name from dual
      5   union all
      6   select 'Alxer' name from dual
      7   union all
      8   select 'Alexender' name from dual
      9   union all
     10   select 'Alexendar' name from dual)
     11   select * from gyj_test where  regexp_like(name,'[^Ale|ax.r$]');
    
    NAME
    ---------
    Alexender
    Alexendar
    


     

    二、分析:

     '^Ale|ax.r$'――表示匹配Ale或ax开头的字符串,.表示任一字符。

    gyj@MYDB> create table gyj_test1 (id int,name varchar2(20));
    
    Table created.
    
    gyj@MYDB> insert into gyj_test1 values(1,'Alex');
    
    1 row created.
    
    gyj@MYDB> insert into gyj_test1 values(2,'Alax');
    
    1 row created.
    
    gyj@MYDB> insert into gyj_test1 values(3,'Alxer');
    
    1 row created.
    
    gyj@MYDB> insert into gyj_test1 values(4,'Alexender');
    
    1 row created.
    
    gyj@MYDB> insert into gyj_test1 values(4,'Alexendar');
    
    1 row created.
    
    gyj@MYDB> commit;
    
    Commit complete.


     

    gyj@MYDB> select * from gyj_test1 where regexp_like(name,'^Ale|ax.r$');
    
            ID NAME
    ---------- --------------------
             1 Alex
             4 Alexender
             4 Alexendar


     

    三、以上的SQL语句等价于:

    gyj@MYDB> select * from gyj_test1 where  regexp_like(name,'^Ale')
      2   union all
      3   select * from gyj_test1 where  regexp_like(name,'ax.r$');
    
            ID NAME
    ---------- --------------------
             1 Alex
             4 Alexender
             4 Alexendar
    


     

    四、^出现在[]中表示否定,查询的结果集里含有不是中括号里的字母Aleaxr

    gyj@MYDB> select * from gyj_test1 where  regexp_like(name,'[^Ale|ax.r$]');
    
            ID NAME
    ---------- --------------------
             4 Alexender
             4 Alexendar
    


     

  • 相关阅读:
    border-radius:50%和100%究竟有什么区别
    GoLang几种读文件方式的比较
    Golang Import使用入门
    golang: 常用数据类型底层结构分析
    Python--字典操作
    Python--字符串操作
    Python split 分割中文
    LR(逻辑回归)
    Python--列表操作
    Eclipse 使用Anaconda python 解释器
  • 原文地址:https://www.cnblogs.com/pangblog/p/3278191.html
Copyright © 2011-2022 走看看