REGEXP_REPLACE - Entferne Kommata nur dann von String, wenn sie in () 's eingeschlossen sind

8

Ich finde ein Beispiel auf der Orakel-Forumseite:

Eingabezeichenfolge: a, b, c (x, y, z), a, (xx, yy, zz), x,

%Vor%

Ausgabe: a b c (x, y, z) a (xx, yy, zz) x

Aber ich möchte das Gegenteil machen. Entfernen Sie einfach dieses Zeichen , aus () und bleiben Sie draußen.

Ausgabe: a, b, c (x y z), a, (xx yy zz), x,

    
hamdi 26.07.2011, 07:39
quelle

3 Antworten

3

Dies funktioniert für eine konstante Länge von Argumenten mit Klammern.

%Vor%

Update inspiriert von @ Kobi Kommentar:
Dieser reguläre Ausdruck entfernt die 1., optionale 2. und optionale 3. , zwischen ()
Es kann bis zu 9 erweitert werden (Ich habe ein Buch , das besagt, dass \ 1 ... \ 500 nur möglich sein sollte \ 1 ... \ 9 hat gearbeitet)

%Vor%     
bw_üezi 26.07.2011 07:59
quelle
1

Nicht sicher, ob REGEXP_REPLACE negative Look-ahead-Anzeigen und Look-Backs unterstützt, aber wenn dies der Fall wäre, würde dies funktionieren: ,(?<!\)[^\(]*)(?![^\)]*\()

Ich habe mit C # getestet:

%Vor%     
Petar Ivanov 26.07.2011 08:14
quelle
1

Eine etwas modifizierte Version des regulären Ausdrucks, den Sie verwendet haben:

%Vor%     
Karolis 26.07.2011 13:35
quelle

Tags und Links