Good day.
Is there a simple way to return regexp matches as an array?
Here is how I am trying in 2.7.7:
val s = """6 1 2"""
val re = """(\d+)\s(\d+)\s(\d+)""".r
for(m <- r.findAllIn(s)) println(m) // prints "6 1 2"
r.findAllIn(s).toList.length // 3? No! It returns 1!
But I then tried:
s match {
case r(m1, m2, m3) => println(m1)
}
And this works fine! m1 is 6, m2 is 1, etc.
Then I found something that finally completed my confusion:
val mit = r.findAllIn(s)
println(mit.toString)
println(mit.length)
println(mit.toString)
That prints:
non-empty iterator
1
empty iterator
So the "length" call somehow modifies the state of the iterator. What is going on here?