有没有一种简单的方法将正则表达式匹配结果返回为数组?
以下是我在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,m2为1等都可以正常工作。
接着我发现了一些让我更加困惑的东西:
val mit = re.findAllIn (s)
println (mit.toString)
println (mit.length)
println (mit.toString)
这将打印:
non-empty iterator
1
empty iterator
"length"方法在某种程度上修改了该迭代器的状态,这是怎么回事?