Я не понимаю, как получить «n-й матч шаблона, начиная с конца строки». Я читал, но не могу применить.Oracle regexp Непонимание
Столбца Я работаю с являются именами каталогов, которые выглядят, как правило, нравятся:
I:\044\LOGFILE\aw_34\
Я хочу, чтобы вытащить последнее имя каталога, а второй до последнего. Используя REGEXP_SUBSTR я могу получить последний каталог,
SELECT REGEXP_SUBSTR(col_name, '\\[^\]+\\$')
Я думаю, что я спрашиваю здесь: «начало в конце значения в имя_столбце, вернуть первый экземпляр 1 или более не обратный косой черты символы, которые лежат между двумя обратными косыми чертами ».
Однако я не могу использовать разумную комбинацию параметров параметров, чтобы получить только второе имя папки ('\ LOGFILE \' в этом примере). Я пробовал:
SELECT REGEXP_SUBSTR(col_name, '\\[^\]+\\$', 1, 2)
возвращает NULL. Кажется, я на самом деле не прошу «начать в конце строки и найти второе появление шаблона». Таким образом, я прибегал к сопоставлению образцу последних двух папок:
SELECT REGEXP_SUBSTR(col_name, '\\[^\]+\\[^\]+\\$')
затем, обернув это выражение в 2-регулярное выражение, чтобы получить матч на одной папке, начиная с передней панели.
Это работает, но не помогает мне понять основную ошибку в использовании
REGEXP_SUBSTR(col_name, '\\[^\]+\\$', 1, 2)
или еще более «прямой» способ вытаскивания только матч мне нужно («\ LOGFILE \» в этом примере). Что не так?
+1 для хорошо объясненного вопроса – Incognito