我对支持^作为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]+$
,它在网站上的所有样式中均正确匹配。
答案 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
匹配。但是,前面的数字实际上都没有被匹配。