Java的多行正则表达式行为

时间:2018-02-05 17:13:35

标签: java regex multiline

在多线模式下,我期待Java

"BEGIN\n\n  END".replaceAll("(?m)^\\s+|\\s+$", "")

导致

"BEGIN\n\nEND"

但反而导致

"BEGINEND"

我错过了什么?

1 个答案:

答案 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"