相关疑难解决方法(0)

Scala regexps:如何将匹配作为数组或列表返回

有没有一种简单的方法可以将regex匹配作为数组返回?
以下是我的尝试方式2.7.7:

val s = """6 1 2"""
val re = """(\d+)\s(\d+)\s(\d+)""".r
for (m <- re.findAllIn (s)) println (m) // prints "6 1 2"
re.findAllIn (s).toList.length // 3? No! It returns 1!
Run Code Online (Sandbox Code Playgroud)

但我接着尝试了:

s match {
  case re (m1, m2, m3) => println (m1)
}
Run Code Online (Sandbox Code Playgroud)

这很好用!m1为6,m2为1等.

然后我发现了一些让我感到困惑的事情:

val mit = re.findAllIn (s)
println (mit.toString)
println (mit.length)
println (mit.toString)
Run Code Online (Sandbox Code Playgroud)

打印:

non-empty iterator
1
empty iterator
Run Code Online (Sandbox Code Playgroud)

"length"调用以某种方式修改迭代器的状态.这里发生了什么?

regex scala

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

regex ×1

scala ×1