我正在尝试使用RegEx解释多行字符串,并且发现如果字符串包含换行符,匹配将失败。我没有使用MULTILINE
模式,因为我没有使用锚点。根据API文档:
在多线模式下,表达式^ 和$匹配之后或之前, 分别是行终止符或 输入序列的结尾。默认情况下 这些表达式只匹配 整个的开始和结束 输入序列。
简而言之:它清楚地表明这个标志只会改变锚点的工作方式,并且不会像那样说“当你的字符串包含换行符时,你一定要使用它”。
public static void main(String[] args) {
Pattern p = Pattern.compile(".*");
Matcher m1 = p.matcher("Hello");
System.out.println("m1: " + m1.matches()); // true
Matcher m2 = p.matcher("Hello\r\n");
System.out.println("m2: " + m2.matches()); // false
}
这真的是一个错误,或者我只是错过了一些文档?或者JAVA使用RegEx的方言,我的模式失败了吗?我正在使用jdk1.6.0_21
。
答案 0 :(得分:3)