Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> OWA Pattern Match
One of our developers is trying to use the following regular =
expression.
^[a-z]+(\-[a-z]+)*\/\d{7,9}$
If we test it with a parser outside of Oracle it performs as expected.
Regular expression: ^[a-z]+(\-[a-z]+)*\/\d{7,9}$
Input text: hep-ex/0408086
Match!
Input text: qwerty\876654 No Match!
But inside of Oracle OWA_PATTERN.MATCH complains the expression is = illegal in Oracle 9, and crashes in Oracle 8. Here's an anonymous block = function, and the results from 9i. This function should return null as = there is a match, but if not it should suffer a divide by 0 error. =20
SQL> set echo on SQL> -- FUNCTION MATCH RETURNS BOOLEAN SQL> -- Argument Name Type In/Out =Default?
SQL> -- ------------------------------ ----------------------- ------ =DEFAULT
--------
SQL> -- LINE VARCHAR2 IN SQL> -- PAT VARCHAR2 IN SQL> -- FLAGS VARCHAR2 IN =
SQL> -- SQL> -- this one assumes that the parameters are Line followed by=20 SQL> Pattern declare
ORA-20001: In omatch: illegal pattern found ORA-06512: at "SYS.OWA_PATTERN", line 766 ORA-06512: at "SYS.OWA_PATTERN", line 869 ORA-06512: at "SYS.OWA_PATTERN", line 966 ORA-06512: at "SYS.OWA_PATTERN", line 989 ORA-06512: at "SYS.OWA_PATTERN", line 998 ORA-06512: at line 5
So what's wrong with the pattern?.
Here's the breakdonw of the regular expression
--
http://www.freelists.org/webpage/oracle-l
Received on Fri Sep 17 2004 - 09:06:45 CDT
![]() |
![]() |