嗨,我想替换一个字符串,例如
<foo/><boo/><woo/>
以这样一种方式,使其成为-
<foo/>
<boo/>
<woo/>
如果我找到<[A-z]
并替换为n<
,那么第一个字符就不见了。如何保持这一点?
p.S我现在正试图在Notepad++中玩,但最终它将进入Java代码。
只需捕获您想要的内容。
(<[^>]*>)
替换为$1n
。请参阅演示。
https://www.regex101.com/r/rK5lU1/14
编辑:
如果你不想在末尾增加换行符,请尝试
(<[^>]*>)(?!$)
替换为$1n
。请参阅演示。
https://www.regex101.com/r/rK5lU1/15
您可以尝试以下方法,
(?<=>)(?=<)
使用上面的正则表达式,然后将匹配的边界替换为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"));
这个正则表达式也可以在记事本++上使用。