【发布时间】:2014-03-28 13:53:19
【问题描述】:
以下代码出现一个奇怪的错误。
我有一个类Example,带有一个伴随对象,我在其中定义了一个字符串SIGN。在Example 类中,我有一个创建正则表达式的方法,并使用字符串插值,这样我就可以使用SIGN 来构建我的正则表达式。
这可以编译,但我在运行时遇到一个奇怪的错误。这是一个 Scala 错误吗?我正在使用 Scala 2.10.3(在 Windows 7 上)。
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Example {
import Example._
def regex = s"""$SIGN?\d+""".r
}
object Example {
private val SIGN = """(\+|-)"""
}
// Exiting paste mode, now interpreting.
defined class Example
defined module Example
scala> val e = new Example
e: Example = Example@77c957d9
scala> e.regex
scala.StringContext$InvalidEscapeException: invalid escape character at index 1 in "?\d+"
at scala.StringContext$.treatEscapes(StringContext.scala:229)
at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
at scala.StringContext.standardInterpolator(StringContext.scala:123)
at scala.StringContext.s(StringContext.scala:90)
at Example.regex(<console>:9)
【问题讨论】:
-
@raina77ow 这也不起作用,我得到了同样的异常。
-
看起来您看到的是this issue 的某个版本,也许吧?普通的旧
s"$SIGN?\\d+".r应该可以正常工作。 -
是的,它适用于`\\`。
-
@TravisBrown 请提交您的评论作为答案,然后我会接受它作为我问题的答案。
-
你要的是
r"""$SIGN?\d+"""。
标签: regex scala string-interpolation