【发布时间】:2019-04-30 07:24:10
【问题描述】:
我对支持 ^ 作为 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 文档似乎也表示支持 ^: https://docs.oracle.com/cd/B13789_01/appdev.101/b10795/adfns_re.htm#1006817
我在https://regex101.com/ 中针对表达式^[\dA-Z]+$ 测试了1000C,它在网站上的所有风格中都正确匹配。
【问题讨论】:
-
您专注于错误的模式。 Oracle 正则表达式中的括号表达式中不能使用速记字符类,仅此而已。
-
感谢 Wiktor,您能否提供导致重复的问题?
标签: regex oracle regexp-like