它抛出了这个错误:
scala> val a = """[\b]""".r
java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 2
根据https://www.scala-lang.org/api/2.12.3/scala/util/matching/Regex.html,使用三引号时不需要转义反斜杠。当我尝试使用\ n,\ t,\ v时,它不会给我一个错误。 \ b是特殊的,因为它在括号内(它是一个退格字符)与匹配的字边界时具有不同的含义。
答案 0 :(得分:3)
\b
未被解释为退格符。 """[\b]"""
相当于"[\\b]"
。使用三引号时不需要转义反斜杠的原因是反斜杠没有任何特殊意义,因为根本不支持转义序列。因此,无法在这种形式的字符串表达式中键入退格符。
要使用转义序列(例如\b
)来表示退格键,您需要使用传统的引用样式:
scala> val a = "[\b]".r
a: scala.util.matching.Regex = [?]
不幸的是, 现在必须转义正则表达式中可能存在的任何其他反斜杠。