比赛案例中的Scala Regex小组

时间:2017-11-30 19:30:42

标签: scala

我有一个像这样的regualar Expression

private val operatorCallS = """(CALL) (?:\$([0-9][0-9]?)) (\w+)"""
private val operatorCall= operatorCallS.r

然后我有这样的比赛:

if (tokens.hasNext) {
  tokens.next() match {    
    case opeatorCall(m) => ...

在这里,我希望组中包含数字,但m.group()不起作用,此功能不存在。为什么呢?

1 个答案:

答案 0 :(得分:0)

因为m不是正则表达式而是运算符调用的正则表达式的解析结果(字符串)。 为了解析token(tokens.next()),您可以使用以下代码:

val token = "CALL $12 aaa"
token match {
  case operatorCall(m, m2, m3) => println(m); println(m2); println(m3)
  case _ => println("No")
}