2015-02-13 2 views
1

Привет, я хочу заменить строку, например.Как заменить один алфавит на тот же алфавит и новый символ строки в Java regex

<foo/><boo/><woo/>

таким образом, чтобы она стала -

<foo/> <boo/> <woo/>

Если я найду <[A-z] и заменить \n< то первый символ исчезнет. Как это сохранить?

P.S Сейчас я пытаюсь играть в Notepad ++, но, в конце концов, он перейдет в Java-код.

+1

** Внимание:. Не используйте '[Az]' в регулярных выражениях ** Для того, чтобы соответствовать любой заглавной или строчной ASCII, используй '[A-Za-Z]' или установить * Игнорировать Case * и используйте '[AZ]' или '[az]'. '[A-z]' также может совпадать с несколькими символами пунктуации, кодовые точки которых лежат между 'Z' и' a'. –

ответ

1

Вы можете попробовать ниже,

(?<=>)(?=<) 

использовать выше регулярное выражение, а затем заменить согласованную границу с \n характером.

DEMO

String s = "<foo/><boo/><woo/>"; 
System.out.println(s.replaceAll("(?<=>)(?=<)", "\n")); 

Выход:

<foo/> 
<boo/> 
<woo/> 

ИЛИ

String s = "<foo/><boo/><woo/>"; 
System.out.println(s.replaceAll("(?!^)(<[A-Za-z])", "\n$1")); 

Это регулярное выражение будет работать на Notepad ++ тоже.

2

Просто захватите то, что вы хотите.

(<[^>]*>) 

Заменить на $1\n. См. Демонстрационный ролик.

https://www.regex101.com/r/rK5lU1/14

EDIT:

Если вы не хотите, дополнительный символ новой строки в конце попытаться

(<[^>]*>)(?!$) 

Заменить $1\n .Увидь демо.

https://www.regex101.com/r/rK5lU1/15

+0

, но он создает дополнительный символ новой строки в последний раз. –

+2

@AvinashRaj дополнительная строка в конце не делает это неправильным ответом. Это не экзамен по IPS, мы здесь, чтобы помочь. Нисходящие слова без комментариев - это самое плохое ИМХО – vks

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