为什么我在不同情况下使用不同数量的转义字符?

mip*_*est 5 java regex

使用Java中的正则表达式,为什么我应该编写"\n"定义新行字符并"\\s"定义空格字符?

为什么反斜杠的数量不同?

usr*_*301 8

Java自己进行字符串解析,将其从代码转换为内存中的内部字符串,然后将字符串发送到正则表达式解析器.

Java将2个字符\n转换为换行符(ASCII码0x0A),将前2个(!)字符\\s转换为单个反斜杠:\s.现在,字符串被发送到正则表达式解析器,并且由于正则表达式识别它们自己的特殊转义字符,因此它将\s"任何空格"视为"任何空格".

此时,代码\n已存储为单个字符"linefeed",而正则表达式不会再次处理它.

由于正则表达式将该集合识别\n为"换行",因此您也可以\\n在Java字符串中使用 - Java将转义\\转换为单个\,然后正则表达式模块将找到\n(再次)转换为换行符.