我目前正在学习java正则表达式,我对转义字符有点困惑。我已经读过java正则表达式基本上是一个两步过程,首先是字符串解析器处理字符串然后是正则表达式。这就是为什么模式中需要双后背的原因。
但是,我想知道双后退和单后退之后的转义字符有什么区别。例如:
Pattern pattern = Pattern.compile("\\ntest");
和
Pattern pattern = Pattern.compile("\ntest");
它似乎工作原理相同,因为matcher以任何一种方式返回true;
Matcher match = pattern.matcher("\ntest");
那么有什么重大差异吗?
答案 0 :(得分:2)
没有区别。
"\\n"
表示您将\n
字符串发送到正则表达式引擎。请参阅Java regex syntax help:
\n
换行符(换行符)('\ u000A')
"\n"
表示您将LF符号发送到正则表达式引擎。由于它没有特殊含义,因此它与自身相匹配。
因此,用作正则表达式的"\\n"
和"\n"
字符串文字都匹配相同的内容。