2012-03-02 3 views
1

Теперь у меня есть строка, и я хочу удалить \ n и преобразовать \ u в \\ u.регулярное выражение

Если строка содержит \\ u, я не изменю ее на \\\ u.

Я хочу использовать String.replaceAll(), но я не знаю, как написать регулярное выражение.

, пожалуйста, помогите мне. Благодарю.

пример:

\ и => \\ и

\\ и => \\ и (ничего не делать)

+2

Когда вы говорите, что измените '\ u' на' \\ u', вы имеете в виду, что данное '' \\ u '' вы хотите '' \\\\ u ​​''? (Несколько примеров были бы полезны! :-) – aioobe

+0

@aioobe Спасибо за ваш совет :) – Felix

ответ

4

Вот решение, используя негативный взгляд фоновым. (Изменения \u к \\u только если это не предваряется в \.)

String in = "lorem ipsum \\u dolor \\\\u sit \n amet"; 

System.out.println(in); 
System.out.println(in.replaceAll("\\n", "") 
        .replaceAll("(?<!\\\\)\\\\u", "\\\\\\\\u")); 

Печать:

lorem ipsum \u dolor \\u sit 
amet 
lorem ipsum \\u dolor \\u sit amet 
  • \n удален
  • Первый \u изменяется на \\u но в то время как \\u p зарезервировано как есть.
+0

Он работает. спасибо :) – Felix

+0

Не могли бы вы объяснить необходимость стольких побегов? Не нужно \\ быть достаточно, чтобы убежать \ (я не очень хорошо знаком с Java) – RedBaron

+0

Обратную косую черту в строковом литерале Java нужно экранировать, поэтому '' \\ "' представляет строку \. Регулярное выражение тоже обрабатывает \ специально, так что у вас есть еще один уровень побега. – aioobe

Смежные вопросы