PL / SQL上的RegExp

时间:2015-09-24 11:56:31

标签: sql regex oracle plsql

我需要帮助理解PL / SQL中的REGEXP。

这很简单,我只想要一个验证Varchar2的验证器。 第一个字母应该是'a',而Varchar2上的其余字母只能是'b'并且下划线'_'。

例如,应接受此字符串:

    aaa , ab , a_ , ab_b , a_b , abbbbbb_ , a___b_ , a_____b_b_b_b_b_b

以下是我理解应该有效的方法:

    ^[a]([b_]*)*

但是,如果我有像'abbbbjbbb'这样的字符串,它说它是有效的字符串吗?

什么是正确的模式?

这是我的匿名程序:

    set serveroutput on size 1000000 
    DECLARE 
      v_result      VARCHAR2(10); 
      v_bool        BOOLEAN; 
    BEGIN 
      v_bool:=FALSE; 
      IF (REGEXP_LIKE('ab_b_b_bb','^[a]([b_]*)*')) 
        THEN 
          v_result:='VALID'; 
        ELSE 
          v_result:='NOT VALID'; 
      END IF; 
      dbms_output.put_line(v_result); 
    END; 

提前致谢,

第一个问候,

伊万

1 个答案:

答案 0 :(得分:3)

您只需要使用行结束^[a][b_]*$

[b_]*

并且还删除了不必要的组,因为{{1}}单独完成了你的工作..