这个正则表达式“”“[\ b]”“”。在scala中有什么问题

时间:2018-02-07 06:12:15

标签: scala

它抛出了这个错误:

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是特殊的,因为它在括号内(它是一个退格字符)与匹配的字边界时具有不同的含义。

1 个答案:

答案 0 :(得分:3)

\b未被解释为退格符。 """[\b]"""相当于"[\\b]"。使用三引号时不需要转义反斜杠的原因是反斜杠没有任何特殊意义,因为根本不支持转义序列。因此,无法在这种形式的字符串表达式中键入退格符。

要使用转义序列(例如\b)来表示退格键,您需要使用传统的引用样式:

scala> val a = "[\b]".r
a: scala.util.matching.Regex = [?]

不幸的是, 现在必须转义正则表达式中可能存在的任何其他反斜杠。