我有以下表达式匹配使用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 。
感谢任何帮助。谢谢。
答案 0 :(得分:1)
开放式括号后的?:
是什么,如(?: ... )
中所示?这不是正则表达式的Oracle风格;如果删除所有?:对,查询将返回一行。在Oracle中,?:字面意思是:
SQL> select 1 from dual where regexp_like('?:', '(?:)');
1
----------
1
1 row selected.
您必须使用不受Oracle支持的不同风格的正则表达式功能。