Есть ли простой способ вернуть регулярные выражения в виде массива?
Вот как я пытаюсь в 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!
Но я тогда попытался:
s match {
case re (m1, m2, m3) => println (m1)
}
И это отлично работает! m1 - 6, м2 - 1 и т.д.
Затем я нашел кое-что, что добавило моей путанице:
val mit = re.findAllIn (s)
println (mit.toString)
println (mit.length)
println (mit.toString)
Что печатает:
non-empty iterator
1
empty iterator
Звонок "длина" каким-то образом изменяет состояние итератора. Что здесь происходит?