Java正则表达式 - 双后退或单个后面的逃脱角色?

时间:2017-02-07 11:03:57

标签: java regex escaping

我目前正在学习java正则表达式,我对转义字符有点困惑。我已经读过java正则表达式基本上是一个两步过程,首先是字符串解析器处理字符串然后是正则表达式。这就是为什么模式中需要双后背的原因。

但是,我想知道双后退和单后退之后的转义字符有什么区别。例如:

Pattern pattern = Pattern.compile("\\ntest");

Pattern pattern = Pattern.compile("\ntest");

它似乎工作原理相同,因为matcher以任何一种方式返回true;

Matcher match = pattern.matcher("\ntest");

那么有什么重大差异吗?

1 个答案:

答案 0 :(得分:2)

没有区别。

"\\n"表示您将\n字符串发送到正则表达式引擎。请参阅Java regex syntax help

  

\n换行符(换行符)('\ u000A')

"\n"表示您将LF符号发送到正则表达式引擎。由于它没有特殊含义,因此它与自身相匹配。

因此,用作正则表达式"\\n""\n"字符串文字都匹配相同的内容。