Re: Need regexp help (seemingly simple problem)
Date: Fri, 23 Oct 2009 13:53:27 -0500 (CDT)
Message-ID: <f99df1b33a96d03a454831d470520d7e.squirrel_at_society.servebeer.com>
Hey Mike,
> First of all I would like to say that finding detailed information about
> Oracle's implementation of regular expressions is next to impossible. Either
> that, or I am looking in all the wrong places. So, links to any complete
> online documentation would be appreciated. I found plenty of 'basic
> explanation' but there has got to be more.
This site might help:
http://www.regular-expressions.info/oracle.html
...although it's lacking in version-specific information about what Oracle's implemented. There's also a link at the bottom of the page for a book from Amazon.
> I could easily use INSTR and SUBSTR to do this, but my goal is to solve the
> problem using a single REGEXP_SUBSTR statement. Also, I have used the
> pattern 'a[[:digit:]]+' which results in 'a12345'. This is almost right, but
> I don't want the 'a' to be returned.
I don't think that's possible with Oracle's regex. It's possible in Perl, but only in 5.10 and up from what I've found. This is as close as I could get:
select regexp_substr('2B4a12345Z2lr7','[[:digit:]]+',
regexp_instr('2B4a12345Z2lr7','a')) from dual;
Yes, the REGEXP_INSTR is overkill as INSTR would work just as well and is most likely faster for this particular use.
Here's the doc that describes a possible "true" answer in regex, although it does not appear to be possible in Oracle's regex.
HTH! Rich
-- http://www.freelists.org/webpage/oracle-lReceived on Fri Oct 23 2009 - 13:53:27 CDT