匹配 oracle 中的行首 regexp_like

Matching beginning of line in oracle regexp_like

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

以下查询 returns 无:

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 文档似乎也表明支持 ^: https://docs.oracle.com/cd/B13789_01/appdev.101/b10795/adfns_re.htm#1006817

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

我无法使字符 class 中的 \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。但是,前面的 none 个数字实际上是匹配的。