Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java';s多行正则表达式行为_Java_Regex_Multiline - Fatal编程技术网

Java';s多行正则表达式行为

Java';s多行正则表达式行为,java,regex,multiline,Java,Regex,Multiline,在多行模式下,我希望使用Java "BEGIN\n\n END".replaceAll("(?m)^\\s+|\\s+$", "") 导致 "BEGIN\n\nEND" 但结果却是 "BEGINEND" 请问我遗漏了什么?多行不会更改\n的解释,因为\s匹配所有空白字符,包括换行符 您可以使用\h(水平空白)而不是\s使其工作(从Java 8开始提供): 如果您使用的是较旧的Java版本,请使用此选项,而不是\h:(感谢@ctwheels) \s包括\n。您可以使用[^\S\n]而不是

在多行模式下,我希望使用Java

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

"BEGIN\n\nEND"
但结果却是

"BEGINEND"

请问我遗漏了什么?

多行
不会更改
\n
的解释,因为
\s
匹配所有空白字符,包括换行符

您可以使用
\h
(水平空白)而不是
\s
使其工作(从Java 8开始提供):


如果您使用的是较旧的Java版本,请使用此选项,而不是
\h
:(感谢@ctwheels)


\s
包括
\n
。您可以使用
[^\S\n]
而不是
\S
字符类
\h
是posix字符类的速记等价物
[:blank:
。在java中,空白字符类可以被指定为<代码> \p{BLUL}} /代码>。这是对旧版本Java的更精确的替代。
String repl = "BEGIN\n\n  END".replaceAll("(?m)^\\h+|\\h+$", "");
[^\S\n]