Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

REGEXP_SUBSTR question

John O'TooleFeb 25 2009 — edited Sep 14 2010
Folks, I'm trying to use REGEXP_SUBSTR to find the piece of text between the second last and last occurrence of a backslash. I can find the text between any specified occurrences of backslashes when I start at the front, but I don't know how many backslashes there will be in the string.
I'm on 10g R2, so don't have access to REGEXP_COUNT.
WITH test_data AS (
SELECT 'c:\temp\folderA\fileA.txt' t FROM DUAL UNION ALL
SELECT 'c:\temp\fileA.txt' t FROM DUAL UNION ALL
SELECT '\\mymachine\A\fileB.txt' t FROM DUAL UNION ALL
SELECT '\\mymachine\A\B\fileB.txt' t FROM DUAL UNION ALL
SELECT '\\mymachine\A\B\C\image.jpg' t FROM DUAL UNION ALL
SELECT '\\mymachine\A\B\C\D\music.mpg' t FROM DUAL UNION ALL
SELECT 'c:\myfolder\folderD\folderE\4969-A.txt' t FROM DUAL
)
SELECT t, REGEXP_SUBSTR(t,'[^\]+', 1, 3) my_string
FROM test_data;
The REGEXP_SUBSTR in that example gives me the third occurrence, which isn't quite right. The output I would like is:
folderA
temp
A
B
C
D
folderE
Many Thanks.
This post has been answered by Karthick2003 on Feb 25 2009
Jump to Answer

Comments

Processing
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Oct 12 2010
Added on Feb 25 2009
6 comments
6,737 views