有没有一种简单的方法可以将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"调用以某种方式修改迭代器的状态.这里发生了什么?