在多行模式下,我期望 Java
"BEGIN\n\n END".replaceAll("(?m)^\\s+|\\s+$", "")
导致
"BEGIN\n\nEND"
但它的结果是
"BEGINEND"
请问我缺少什么?
最佳答案
MULTILINE
不会更改 \n
的解释,因为 \s
匹配包括换行符在内的所有空白字符。
您可以使用 \h
(水平空白)代替 \s
来使其工作(从 Java 8 开始可用):
String repl = "BEGIN\n\n END".replaceAll("(?m)^\\h+|\\h+$", "");
<小时/>
如果您使用的是较旧的 Java 版本,请使用此代替 \h
:(感谢 @ctwheels)
[^\S\n]
关于Java 的多行正则表达式行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48627933/