2017-03-17 4 views
0

Ich versuche, eine Lösung zu finden, aber irgendwie ich bin immer falsch ausgegeben (im Folgenden einige Online-Lösungen und verwirrend mich :() bitte raten, wo ich falsch werdeOracle: Regex für mehrere Ersetzungen auf einem Muster ersetzen

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

Erwartete Ausgabe: alles entfernt werden sollten, bevor .operator

extn1 extn2 
+0

\ 2 bedeutet das Untermuster im zweiten Satz von Klammern im Suchmuster. Es gibt nur einen Satz Klammern in Ihrem Suchmuster, also gibt es keine Möglichkeit, dass dies funktioniert. Dann sagst du alles vorher. Muss gehen, aber in Ihrem Beispiel suchen Sie nach einem bestimmten Text. Welches ist richtig? Es kann nicht beides sein. Beachten Sie auch, dass der Punkt in regulären Ausdrücken ein Metazeichen ist. Wenn Sie nach einem Punkt suchen, müssen Sie diesen Punkt umgehen. – mathguy

+0

Oh vielen Dank für den Tipp. Ich bin neu und ich wusste, dass ich es falsch machen muss. Wie ich in der erwarteten Ausgabe sage, das ist korrekt und was ich erwarte und ein ich versuchte, kann definitiv falsch sein, wie Sie sagen –

Antwort

3

Try this:

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

Wenn das Wort mit test_1 beginnen muss:

+0

Ausgezeichnet !! Genau das, was ich gesucht habe und es funktioniert :) Vielen Dank –

+0

@KarthikeyanChidambaram - Froh ich könnte Hilfe. – GurV

Verwandte Themen