我正在使用反斜杠作为我正在处理的序列化格式的转义字符。我把它作为一个常数,但IntelliJ强调它并突出显示它是红色的。在悬停时,它不会提供任何错误消息或任何有关它不喜欢它的信息。
这是什么原因以及如何解决?
答案 0 :(得分:4)
IntelliJ比我更聪明,并且意识到我在正则表达式中使用这个字符,其中需要2个反斜杠,但是,IntelliJ也认为我的小心思可以找到问题而不给我任何关于它的信息。 / p>
答案 1 :(得分:1)
如果它被用作正则表达式,那么" \" 必须转义。
如果您正在逃避" \" as" \"与传统正则表达式一样,您还需要再添加两个\\
,总共\\\\
。
这是因为Java解释" \":
的方式在文字Java字符串中,反斜杠是一个转义字符。该 字符串" \"是一个反斜杠。在正则表达式中, 反斜杠也是一个转义字符。正则表达式 匹配单个反斜杠。这个正则表达式作为Java字符串, 成为" \\"。这是正确的:4个反斜杠匹配单个。
正则表达式\ w匹配单词字符。作为Java字符串,这是 写作" \ w"。
提供替换字符串时会出现相同的反斜杠 String.replaceAll()等方法作为Java中的文字Java字符串 码。在替换文本中,美元符号必须编码为\ $和 当你想用一个替换正则表达式匹配时,反斜杠为\ 实际的美元符号或反斜杠。 但是,反斜杠也必须如此 在文字Java字符串中转义。所以一美元签到了 替换文字变为" \ $"当写为文字Java字符串时。 单个反斜杠变为" \\"。再说一次:4个反斜杠 插入一个。