Java regex - 双反斜杠或单反斜杠后跟的转义字符?
Posted
技术标签:
【中文标题】Java regex - 双反斜杠或单反斜杠后跟的转义字符?【英文标题】:Java regex - The Escape Character Followed By The Double Backslahes Or Single? 【发布时间】:2017-06-24 14:22:01 【问题描述】:我目前正在学习 java 正则表达式,但我对转义字符有点困惑。我读过java正则表达式基本上是一个两步过程,首先字符串解析器处理字符串,然后是正则表达式。这就是为什么模式中需要双反斜杠的原因。
但是,我想知道转义字符后跟双反斜杠和单反之间有什么区别。例如:
Pattern pattern = Pattern.compile("\\ntest");
和
Pattern pattern = Pattern.compile("\ntest");
它的工作原理似乎相同,因为无论哪种方式匹配器都返回 true;
Matcher match = pattern.matcher("\ntest");
那么有什么显着差异吗?
【问题讨论】:
您可以同时使用\n
和LF
模式来匹配换行符。没有区别。
【参考方案1】:
没有区别。
"\\n"
表示您将\n
字符串发送到正则表达式引擎。见Java regex syntax help:
\n
换行符('\u000A')
"\n"
表示您将 LF 符号发送到正则表达式引擎。既然没有特殊含义,就和自己匹配。
所以,"\\n"
和 "\n"
用作 regex 模式的字符串字面量 匹配相同的东西。
【讨论】:
以上是关于Java regex - 双反斜杠或单反斜杠后跟的转义字符?的主要内容,如果未能解决你的问题,请参考以下文章