Привет, я хочу заменить строку, например
<foo/><boo/><woo/>
таким образом, чтобы это стало -
<foo/> <boo/> <woo/>
Если я найду <[Az]
и заменим на \n<
то первый символ исчезнет. Как это сохранить?
PS Сейчас я пытаюсь играть в Notepad++, но, наконец, он перейдет в Java-код.
Вы можете попробовать ниже,
(?<=>)(?=<)
используйте указанное выше выражение и затем замените согласованную границу символом \n
.
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++.
Просто захватите то, что вы хотите.
(<[^>]*>)
Замените на $1\n
См. Демо.
https://www.regex101.com/r/rK5lU1/14
РЕДАКТИРОВАТЬ:
Если вам не нужна дополнительная строка в конце, попробуйте
(<[^>]*>)(?!$)
Замените на $1\n
См. Демо.
[Az]
в своих регулярных выражениях. Чтобы сопоставить любую прописную или строчную букву ASCII, используйте[A-Za-z]
или установите флаг игнорирования регистра и используйте[AZ]
или[az]
.[Az]
также может соответствовать нескольким знакам препинания, чьи кодовые точки лежат междуZ
иa
.