2016-12-07 4 views
2

Ich versuche eine Regex zu erstellen, die mein Escape-Zeichen ersetzt. Mein Escape-Zeichen ist ein umgekehrter Schrägstrich (\). Zum Beispiel:Regex ersetzen Escape-Zeichen

lastname[ct]sam\\\,ple 

Sollte erhalten:

lastname[ct]sam\,ple 

Zuerst habe ich versucht, es mit diesem:

([\\]{1})(.?) 

, die die richtigen Gruppen angepasst ("\\" und "\") . Dann habe ich versuchte, nur den umgekehrten Schrägstrich mit positivem Look-Ahead zu bekommen, aber es Artikeln nicht wirklich funktionieren:

(?=([\\]{1}[^\\]{1}))(.?) 

Es einfach den umgekehrten Schrägstrich vor dem Komma angepasst und nicht den umgekehrten Schrägstrich vor dem umgekehrten Schrägstrich. Jemand eine Idee wo mein Fehler ist?

+0

Haben Sie versucht, ['' \\ (.) '' Durch '$ 1' zu ersetzen (https://regex101.com/r/7ho3ll/1)? Passen Sie einen umgekehrten Schrägstrich an und erfassen Sie das nachfolgende Zeichen und ersetzen Sie es nur durch das erfasste Zeichen. –

+0

@ WiktorStribiżew Ich bin mir nicht sicher, wie man die Substitution auf Java macht. Ich versuche es! – perotom

+0

In Java: 's.replaceAll (" \\\\ (.) "," $ 1 ")' –

Antwort

1

Spiel ein Backslash und Capture das nachfolgende Zeichen mit \\(.) regex, und ersetzen Sie sie durch das aufgenommene Zeichen nur die $1 Rückreferenzierung verwenden.

In Java können Sie

String my_input = "\\\\\\,sample"; // => \\\,sample 
String result = my_input.replaceAll("\\\\(.)", "$1"); 
System.out.println(result); // => \,sample 

Java demo nachschauen.