コンマ区切りの数字または数字の範囲に一致する次の正規表現を見つけました。
val reg = """^(\d+(-\d+)?)(,\s*(\d+(-\d+)?))*$""".r
これは有効な文字列と一致しますが、それぞれが区切られたエントリの 1 つに対応する文字列のリストではなく、文字列を 1 つだけ取得します。例えば
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")