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");

那么有什么显着差异吗?

【问题讨论】:

您可以同时使用\nLF 模式来匹配换行符。没有区别。 【参考方案1】:

没有区别。

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

\n    换行符('\u000A')

"\n" 表示您将 LF 符号发送到正则表达式引擎。既然没有特殊含义,就和自己匹配。

所以,"\\n""\n" 用作 regex 模式的字符串字面量 匹配相同的东西。

【讨论】:

以上是关于Java regex - 双反斜杠或单反斜杠后跟的转义字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有双反斜杠的字符串转换为单反斜杠

Ruby gsub 替换值的单反斜杠?

python input()键盘输入8583报文带有x单反斜杠自动转义问题解决办法

我需要在配置文件中转义反斜杠吗?

双反斜杠不起作用?

网络资源路径的双斜杠//和双反斜杠\的区别