参数化正则表达式用于模式匹配

时间:2011-09-14 15:27:23

标签: regex scala

是否可以匹配从函数返回的正则表达式模式?我可以这样做吗?

def pattern(prefix: String) = (prefix + "_(\\w+)").r

val x = something match {
  case pattern("a")(key) => "AAAA" + key
  case pattern("b")(key) => "BBBB" + key
}

我无法编译上面的代码。以下控制台快照显示我收到的错误。我究竟做错了什么?

scala> def pattern(prefix: String) = (prefix + "_(\\w+)").r
pattern: (prefix: String)scala.util.matching.Regex

scala> def f(s:String) = s match {
     | case pattern("a")(x) => s+x+"AAAAA"
<console>:2: error: '=>' expected but '(' found.
       case pattern("a")(x) => s+x+"AAAAA"
                        ^

1 个答案:

答案 0 :(得分:3)

scala不支持此语法,您必须在使用之前声明提取器。请参阅my earlier question on this topic