如何在Java正则表达式中用相同的字母和新行字符替换一个字母

时间:2015-02-13 10:00:50

标签: java regex pattern-matching

嗨我想替换一个字符串,例如

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

以这样的方式变成 -

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

如果我找到<[A-z]并替换为\n<,那么第一个字符就会消失。如何保留呢?

P.S我现在正在尝试使用Notepad ++,但最后它将进入Java代码。

2 个答案:

答案 0 :(得分:2)

只需抓住你想要的东西。

(<[^>]*>)

替换为$1\n。请参阅演示。

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

编辑:

如果您不想在最后添加额外的换行符,请尝试

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

替换为$1\n。请参阅演示。

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

答案 1 :(得分: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"));

这个正则表达式也适用于记事本++。