18
Is there a simple way to return regex 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 <- re.findAllIn (s)) println (m) // prints "6 1 2"
re.findAllIn (s).toList.length // 3? No! It returns 1!
But I then tried:
s match {
case re (m1, m2, m3) => println (m1)
}
And this works fine! m1 is 6, m2 is 1, etc.
Then I found something that added to my confusion:
val mit = re.findAllIn (s)
println (mit.toString)
println (mit.length)
println (mit.toString)
That prints:
non-empty iterator
1
empty iterator
The "length" call somehow modifies the state of the iterator. What is going on here?