2016-12-07 3 views
2

Я пытаюсь создать регулярное выражение, которое заменяет мой escape-символ. Мой escape-символ - это обратная косая черта (\). Например:Regex заменить escape-символ

lastname[ct]sam\\\,ple 

Если получить:

lastname[ct]sam\,ple 

Сначала я попробовал с этим:

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

Какие соответствуют правильные группы ("\\" и "\") , Тогда я попытался просто получить обратную косую черту с положительным опережающего просмотра, но didn't действительно работать:

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

Это просто соответствует обратной косой черты перед запятой, а не обратную косую черту перед обратной косой черты. Кто-нибудь знает, где моя ошибка?

+0

Вы пытались заменить '' \\ (.) '' На '$ 1' (https://regex101.com/r/7ho3ll/1)? Сопоставьте обратную косую черту и захватите последующий символ и замените только захваченным символом. –

+0

@ WiktorStribiżew Я не уверен, как сделать замену на java. Я попробую! – perotom

+0

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

ответ

1

Match обратная косая черта и захвата последующий символ с \\(.) регулярных выражений, а также заменить захваченное характер только с помощью $1 обратной ссылки.

В Java, вы можете использовать

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

См Java demo.