2016-10-29 3 views
0

In meinem String ersetzen, ich ein # Anfang und Ende setzen will: (. * Als varchar) GussSuche mit regulären Ausdrücken in Java

Ich habe versucht:

s.replaceAll("cast(.* as varchar)","#cast$1#"); 

Aber für eine Zeichenfolge "('abas' + Besetzung (x als varchar))" das Ergebnis ist "('abas' + '# Besetzung (x als varchar #'))" was nicht korrekt ist. Was mache ich falsch?

+1

klarer sein. geben Sie Ihre genaue Eingabe und Ausgabe im Vergleich zu dem, was Sie ausgeben möchten – nhouser9

Antwort

2
s.replaceAll("(cast\\(\\.\\* as varchar\\))","#$1#"); 

Wird den Trick tun.

Sie erhielten die falsche Ausgabe, weil die Klammern um ". * Als varchar" nicht so behandelt wurden, so dass die $ 1 ersetzt wurde, was in ihnen war.

+1

Sie müssen auch die "." und '*' Zeichen. – JimN

+0

Sie haben Recht! Danke, @JimN –

+0

Diesmal ist das Ergebnis "('abas' + '# cast #' (x als varchar))" was immer noch nicht stimmt – user2698684

0

() haben speziell meening, Sie entkommen müssen:

s.replaceAll("(cast\\(.* as varchar\\))","#$1#"); 
+1

das Ergebnis ist" ('abas' + '# cast #' (x als varchar)) "was immer noch nicht stimmt – user2698684

Verwandte Themen