用于行首(^)和行尾($)的正则表达式边界匹配器不起作用



我有一个使用^和$来表示行的开始和结束的模式。

Pattern pattern = Pattern.compile( "^Key2 = (.+)$" );

和这样的输入:

String text = "Key1 = Twas brillig, and the slithy toves"
  + "nKey2 = Did gyre and gimble in the wabe."
  + "nKey3 = All mimsy were the borogroves."
  + "nKey4 = And the mome raths outgrabe.";

但是pattern.matcher( text ).find()返回false

这样不行吗?在Pattern类文档中,摘要指定:

<>之前边界匹配器^一行的开头$一行的结尾

默认情况下,这些符号匹配整个输入序列的开头和结尾

在同一个Pattern类文档中(加了强调):

默认情况下,正则表达式^和$忽略行终止符,分别只匹配整个输入序列的开头和结尾。如果激活MULTILINE模式,则^匹配输入的开始和任何行结束符之后,输入结束处除外。在MULTILINE模式下,$只匹配行结束符或输入序列的末尾。

所以你可以使^和$工作,因为他们被记录在汇总表通过编译模式与Pattern.MULTILINE:

Pattern pattern = Pattern.compile( "^Key2 = (.+)$", Pattern.MULTILINE );

最新更新