Regex 正则表达式模式匹配在scala.js中不起作用?

Regex 正则表达式模式匹配在scala.js中不起作用?,regex,scala,scala.js,Regex,Scala,Scala.js,代码如下: 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): Strin

代码如下:

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控制台的结果:

scala>     wordToPos(s, 20)
(sub: ,
\begin{bmatrix}
\co)
(0,
\begin{bmatrix})
(1,\co)
铬的结果:

(sub: ,
\begin{bmatrix}
\co)
在chrome中,代码打印子字符串,但与正则表达式不匹配。
我做错了什么吗?

由于JavaScript不支持单线修饰符(既不支持内联修饰符,也不支持常规修饰符),因此需要将字符类之外的所有
替换为
[\s\s]
(一个字符类具有相反的速记类,可以匹配字符串中的任何符号)

使用
[\s\s]
,您将匹配包括换行符在内的任何符号,而无需指定单线模式

val lastWordPattern = """([\s\S]*)\s+([\s\S]*)""".r

我认为这是因为JS不支持
(?s)
修饰符。尝试用
[\s\s]
替换所有
,然后重试。事实上,这解决了问题。