我有一个使用^和$来表示行的开始和结束的模式。
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 );