在多线模式下,我期待Java
"BEGIN\n\n END".replaceAll("(?m)^\\s+|\\s+$", "")
导致
"BEGIN\n\nEND"
但反而导致
"BEGINEND"
我错过了什么?
答案 0 :(得分:2)
\n
不会更改\s
的解释,因为\h
匹配包括换行符在内的所有空白字符。
您可以使用\s
(水平空格)代替String repl = "BEGIN\n\n END".replaceAll("(?m)^\\h+|\\h+$", "");
来使其正常工作(从Java 8开始提供):
\h
如果您使用的是较旧的Java版本,请使用此版本代替[^\S\n]
:(感谢@ctwheels)
gnome-terminal -- "/bin/bash -c ls"