给定以下代码段:
Pattern pt = Pattern.compile("\ndog", Pattern.LITERAL);
Matcher mc = pt.matcher("\ndogDoG");
while(mc.find())
{
System.out.printf("I have found %s starting at the " +
"index %s and ending at the index %s%n",mc.group(),mc.start(),mc.end());
}
输出将是:
I have found
dog starting at the index 0 and ending at the index 4.
这意味着,即使我已经指定Pattern.LITERAL
了该链接中的哪个内容:
Pattern.LITERAL 启用模式的文字解析。当指定此标志时,指定模式的输入字符串将被视为文字字符序列。输入序列中的元字符或转义序列将没有特殊含义。
但是,上述代码段给出的输出确实解释了\n
转义序列,它不会将其视为文字。
既然他们在本教程中指定不应该这样做,为什么会以这种方式发生?
我现在 \n 是一个行终止符,但它仍然是一个转义序列字符。