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.