REGEXP_LIKE没有返回任何行

时间:2016-04-26 15:14:42

标签: oracle 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

感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

开放式括号后的?:是什么,如(?: ... )中所示?这不是正则表达式的Oracle风格;如果删除所有?:对,查询将返回一行。在Oracle中,?:字面意思是:

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

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

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