-1

我对支持 ^ 作为 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 not end with

并且下面的 oracle 文档似乎也表示支持 ^: https://docs.oracle.com/cd/B13789_01/appdev.101/b10795/adfns_re.htm#1006817

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

4

1 回答 1

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输入字符串中的最后一个。但是,实际上没有一个前面的数字是匹配的。

于 2019-04-30T07:28:40.887 回答