Oracle REGEXP_LIKE匹配包含数字

时间:2015-09-24 09:25:44

标签: regex oracle

我对正则表达不是很好,有一点我不太懂。

我有一个字符串:' BSIOC_V6_560',以及不同模式的列表。我需要得到这个字符串匹配的每个模式。 但我有以下尝试匹配,但我不会:

select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560','BSIOC_V5*');

我一定误解了什么。有人可以给我一个解释吗?

2 个答案:

答案 0 :(得分:0)

select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560','BSIOC_V5.*');

重点是开放式模式是隐式子串匹配的。

select 'True' as Response from dual where REGEXP_LIKE('abc','b');

结果:是

select 'True' as Response from dual where REGEXP_LIKE('abc','b$');

结果:空

select 'True' as Response from dual where REGEXP_LIKE('abc','c$');

结果:是

答案 1 :(得分:0)

@Jan回答是正确的,但仅用于回答你的问题..

  • 字符*(星号)表示在您的BSIOC_V5情况下零次或多次重复 ..所以是的!你重复0次!这句话也回归真实:

    select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'X*');

  • 字符.(点)表示任何字符,因此.*表示任意字符的重复次数为零或更多......所以...

    select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'BSIOC_V5');  没有匹配,你找不到BSIOC_V5

    select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'BSIOC_V.');  是! BSIOC_V加上任何字符

    select 'True' as Response from dual where REGEXP_LIKE('BSIOC_V6_560', 'BSIOC_V5.*');  不匹配,你找不到BSIOC_V5加上别的......

我希望你会发现它有用!