以下是代码:
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中,代码打印子字符串,但无法匹配正则表达式。 我做错了吗?
答案 0 :(得分:3)
由于JavaScript不支持单行修饰符(既不是内联修饰符也不是常规修饰符),您需要用.
替换字符类外的每个[\s\S]
(一个字符类具有匹配的相反速记类) 任何符号都可以在字符串中)。
使用[\s\S]
,您将匹配包含换行符的任何符号,而无需指定单行模式。
val lastWordPattern = """([\s\S]*)\s+([\s\S]*)""".r