我不明白如何從字符串末尾開始模式的第n個匹配。我讀過,但不能申請。Oracle正則表達式誤解
我正在使用的列是看通常喜歡的目錄路徑名:
I:\044\LOGFILE\aw_34\
我想拉出最後一個目錄名,並持續第二。使用REGEXP_SUBSTR我能夠得到使用
SELECT REGEXP_SUBSTR(col_name, '\\[^\]+\\$')
我想我要問這裏是最後的目錄:開始在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