2017-03-17 34 views
0

我試圖找到一個解決辦法,但不知何故我得到錯誤的輸出(簡稱一些在線的解決方案和混淆自己:()請告知我要去的地方錯了甲骨文:正則表達式替換多個替換上的圖案

var := 'test_1_file1.extn1 test_1_file2.extn2' 
select regexp_replace(var,'(test_1*.).*$','\2') from dual; 

預期輸出:一切都應該被刪除之前.operator

extn1 extn2 
+0

\ 2意味着搜索模式中第二組圓括號中的子模式。在搜索模式中只有一組括號,所以這是行不通的。然後你說一切以前。必須去,但在你的例子中,你搜索特定的文字。哪個是對的?它不能兼而有之。請注意,句點是正則表達式中的元字符,如果您搜索一段時間,則必須將其轉義。 – mathguy

+0

哦,非常感謝小費。我對它很陌生,我知道我一定是做錯了。正如我在預期的輸出中所說的那樣,那是正確的,我期望的和我試過的一個可能肯定是錯誤的,因爲你說 –

回答

3

試試這個:

SELECT 
    regexp_replace(var, '([^ ]*\.)', '') replaced 
FROM dual; 

如果單詞必須以test_1開頭:

SELECT 
    regexp_replace(var, '(test_1[^ ]*\.)', '') replaced 
FROM dual; 
+0

非常好!!正是我在找的,它的工作:)非常感謝 –

+0

@KarthikeyanChidambaram - 很高興我能幫幫我。 – GurV