2017-01-23 3 views
-1

Ich arbeite in Java und versuche ein Komma vor einem 4-stelligen Datum zu setzen. Beispiel:Platziere ein Komma vor dem gefundenen REGEX (4 Ziffern und ein Komma) in JAVA

Normale string:

'El Burro' Van Rankin, Jorge, den 5. Juni 1964, NULL

Ich möchte die folgende Ausgabe (ein Komma vor 1964 Platzierung):

'El Burro' Van Rankin, Jorge, 5. Juni 1964, NULL

Dies ist die regex ich gemacht habe: line = line.replaceAll("(\\d{4},)", ",\1");// wenn er feststellt, eine 4-stellige Zahl mit einem Komma gefolgt es mit einem Komma ersetzen und dann der Gruppe 1 (1964)

Wenn ich diesen Mich betreiben erhalten die folgende Ausgabe:

'El Burro' Van Rankin, Jorge, 5. Juni NULL

Es entfernt das ganze Jahr 1964. Was bin ich falsch gemacht?

+3

Sie müssen die Rückreferenzierung mit '$ definieren': 'line.replaceAll ("(\\ d {4},)" , ", $ 1") '. Vielleicht wird 'replaceAll (" \\ b \\ d {4}, ",", $ 0 ")' noch sauberer. –

+0

danke, das funktioniert gut, d –

Antwort

1

Die Ersetzungszeichenfolge hat eine \1 darin, während es $1 sein sollte. Das ist das einzige Problem, das ich sehen kann.

line.replaceAll("(\\d{4},)", ",$1") 

oder vielleicht sogar diese, wenn Sie wollen etwas sauberere:

replaceAll("\\b\\d{4},", ",$0")