在Java正则表达式中如何匹配换行符

Mag*_*nus 1 java regex newline multiline

知道为什么这个Java测试用例失败了吗?

@Test
public void newlineParse() throws Exception {
    Pattern pat = Pattern.compile("a.*b", Pattern.MULTILINE);
    assertTrue(pat.matcher("a\nb").find());
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*inO 6

我认为问题在于这Pattern.MULTILNE是不正确的.对于特定的示例,它应该是Pattern.DOTALL(或在表达式中嵌入?).

MULTILINE:

启用多线模式.
在多行模式中,表达式^和$分别在行终止符之后或之前或输入序列的末尾匹配.默认情况下,这些表达式仅在整个输入序列的开头和结尾处匹配.
也可以通过嵌入式标志表达式(?m)启用多行模式.

DOTALL:

在dotall模式中,表达式.匹配任何字符,包括行终止符.默认情况下,此表达式与行终止符不匹配.

使用DOTALL的工作示例