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

时间:2018-10-17 23:11:11

标签: 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());
}

1 个答案:

答案 0 :(得分:6)

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

MULTILINE

  

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

DOTALL

  

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

A working example using DOTALL