1

当我使用 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

任何帮助表示赞赏。谢谢你。

4

1 回答 1

1

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

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

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

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

于 2016-04-26T16:23:00.227 回答