【发布时间】:2015-11-07 23:41:54
【问题描述】:
代码如下:
val s =
"""
|\begin{bmatrix}
|\cos \theta & -\sin \theta \\
|\sin \theta & \cos \alpha
|\end{bmatrix}
""".stripMargin
val lastWordPattern = """(?s)(.*)\s+(.*)""".r
def wordToPos(string: String, position: Int): String = {
val subString = string.substring(0, position)
println("sub: ", subString)
subString match {
case lastWordPattern(x@_*) => {
println(0, x(0))
println(1, x(1))
x(0)
}
case _ => ""
}
}
wordToPos(s, 20)
来自sbt console的结果:
scala> wordToPos(s, 20)
(sub: ,
\begin{bmatrix}
\co)
(0,
\begin{bmatrix})
(1,\co)
来自 chrome 的结果:
(sub: ,
\begin{bmatrix}
\co)
在 chrome 中,代码打印子字符串,但无法匹配正则表达式。 我做错了吗?
【问题讨论】:
-
我认为是因为JS不支持
(?s)修饰符。尝试将所有.替换为[\s\S]并重试。 -
确实可以解决问题。