【问题标题】:Java: Single Backslash String - Why is "\\" illegal? [closed]Java:单反斜杠字符串 - 为什么“\\”是非法的? [关闭]
【发布时间】:2017-11-07 13:21:40
【问题描述】:

我知道反斜杠用于字符转义,所以我必须使用其中两个来写一个反斜杠。

但是为什么不编译呢?

"\\" => 无法编译

但是这个:

"\\\\" => "\"

哪个\转义了什么?

提前谢谢你!

【问题讨论】:

标签: java regex escaping backslash


【解决方案1】:

这取决于上下文。一些String 方法不使用普通字符串,它们使用正则表达式。在正则表达式中,\ 也是一个转义字符,所以要拥有一个对应于普通 \ 字符的正则表达式,你必须写成"\\\\"

【讨论】:

  • 假设太过分了。没有任何问题表明这种情况
  • "\\" => 无法编译 - 几乎暗示了上下文。
  • 如果我错了,请纠正我,但它会编译,当它解析该正则表达式时会在运行时抛出异常,但它会编译。
  • 但是它会抛出的错误信息实际上是它无法编译正则表达式(因为正则表达式函数并不真正直接处理表达式,它们在内部调用Pattern::compile()),因此混乱。
  • 嗯,我的 IDE 给了我一个非常不全面的错误,所以我没有将它与正则表达式中的语法错误相关联,而是(错误地)与语言错误相关联。因此我认为它不会编译,因为我的 IDE 不允许我编译它。但是是的,我在String#replace中使用了它,但我不知道这很重要,所以我把它省略了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
相关资源
最近更新 更多