2013-04-09 18 views
0

我正在使用Oracle 11G,並且我有以下字符串:I - Am in- Need Help- Please並且想要使用-字符解析字符串,然後選擇第二個對象之後的所有內容。我一直在玩REGEXP_REPLACESUBSTR,我可以選擇第二個對象,但似乎無法選擇第二個對象之後的所有東西。我知道我需要添加一個*我認爲的地方,但我似乎無法得到正確的語法。任何幫助將不勝感激。如何使用Oracle中的REGEXP在某個位置之後選擇所有內容

SELECT REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '[^-]+' , 1, 2) 
    FROM DUAL; 

上面的查詢返回第二個對象'Am in',但我希望返回'Need of Help- Please'。同樣重要的是要注意,我不希望-字符直接跟隨結果中的第二個對象,但我想從第三個對象開始。

回答

2

由於[^-]只會匹配非連字符,因此您的匹配組將在第一個連字符後開始,然後在下一個連字符之前停止。爲了捕捉第一個連字符以下的一切,嘗試:

SELECT REGEXP_REPLACE(REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '-.+' , 1), '-', '', 1, 1) FROM DUAL; 
+0

這個答案給了我下面的「我在幫助的請極品」,但我想之後的第二一切「 - 」和得到這個「幫助 - 的需求請'。我也不想擺脫第二個匹配對象前面的每個' - '字符。 – swingard 2013-04-09 19:19:18

+0

對不起,修復了答案。它現在應該工作。 – woemler 2013-04-09 19:27:44

相關問題