我发现以下正则表达式用于匹配逗号分隔的数字或数字范围:
val reg = """^(\d+(-\d+)?)(,\s*(\d+(-\d+)?))*$""".r
虽然这确实匹配有效字符串,但我只从中得到一个 String,而不是一个字符串列表,每个字符串对应于一个单独的条目。例如
reg.findAllIn("1-2, 3").map(s => s""""$s"""").toList
给
List("1-2, 3")
但我想要:
List("1-2", "3")
以下更接近:
val list = "1-2, 3" match {
case Reg(groups @ _*) => groups
case _ => Nil
}
list.map(s => s""""$s"""")
但它包含各种“垃圾”:
List("1-2", "-2", ", 3", "3", "null")