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 不支持。
当我使用 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 不支持。