REGEXP_LIKE 没有返回任何行

No rows returned by REGEXP_LIKE

当我使用 Online Regex Tester (https://regex101.com/) 测试它时,我有以下表达式匹配列出的字符串。

表达式:

^(?:[A-Z]{3}[0-9]{3}[a-z]{1}\([0-9]{1,3}\-[0-9]{1,3}\))\+\s?(?:[A-Z]{2}\((?:[0-9]{1,3}((?:\-[0-9]{1,3}(?:\s?\,\s?)?))?)+\)(?:\s?\+\s?)?)*$

字符串输入:

ATL107j(1-132)+XD(133-156)+SP(157-288)+XD(289-432)

如果我使用:

SELECT 1 FROM DUAL WHERE REGEXP_LIKE([String Input], [Expression])

我没有得到任何行。我不确定与 REGEXP_LIKE 相关的表达式有什么问题。我正在使用 Oracle 11gR2

感谢任何帮助。谢谢。

紧跟在左括号之后的 ?: 是什么,如 (?: ... ) ?那不是正则表达式的 Oracle 风格;如果删除所有 ?: 对,查询将 return 一行。在 Oracle 中,?: 是字面意思:

SQL> select 1 from dual where regexp_like('?:', '(?:)');

         1
----------
         1
1 row selected.

您必须使用不同风格的正则表达式功能,Oracle 不支持。