在oracle regexp_like中匹配行首

时间:2019-04-30 07:24:10

标签: regex oracle regexp-like

我对支持^作为oracle中行锚的开头感到困惑。

以下查询不返回任何内容:

select 1 from dual where regexp_like('1000C', '^[\dA-Z]+$');
select 1 from dual where regexp_like('1000C', '^1[\dA-Z]+$');

在开头没有^的相同查询似乎可以正常工作:

select 1 from dual where regexp_like('1000C', '[\dA-Z]+$');

令我惊讶的是,下面的查询也无法正常工作:

select 1 from dual where regexp_like('1000C', '^1[\dA-Z]+');

但是,如果没有[\ dA-Z] +,^似乎可以工作:

select 1 from dual where regexp_like('1000C', '^1');

下面的问题是关于oracle中的^: Oracle regex - does not start with and does not end with

和以下oracle docs似乎也表明支持^: https://docs.oracle.com/cd/B13789_01/appdev.101/b10795/adfns_re.htm#1006817

我针对https://regex101.com/中的表达式1000C测试了^[\dA-Z]+$,它在网站上的所有样式中均正确匹配。

1 个答案:

答案 0 :(得分:2)

我无法在角色类中获得\d\\d才能在这里正常工作。但是,[0-9]似乎可以工作:

select 1 from dual where regexp_like('1000C', '^1[0-9A-Z]+');

第二个查询起作用的原因:

select 1 from dual where regexp_like('1000C', '[\dA-Z]+$');

是它与输入字符串中的最后C匹配。但是,前面的数字实际上都没有被匹配。