改变正则表达式unapply语义?

时间:2013-03-08 20:00:50

标签: regex scala pattern-matching

正则表达式:

val FollowRE = """(?i)(?<=follow)(\s+(me|@[A-Za-z\d_]+))+""".r

代码段:

"@foo follow me" match {
  case FollowRE() => "baz"
  case _ => "foo"
}

但需要"foo"分支。我可以允许部分正则表达式匹配 所以它需要"baz"分支?

1 个答案:

答案 0 :(得分:0)

匹配必须具有尽可能多的模式变量(或通配符,_以忽略相应的捕获),因为正则表达式具有捕获组。对于你的RE,这是两个捕获组,虽然我无法进行匹配(我认为RE需要工作)。

<强>附录

显然我错过了这一点。你想要一个浮动的比赛。 Scala Regex在其提取器中匹配(在match构造中使用时得到的)是匹配,而不是 find 。因此,如果您希望它像查找一样,则需要将.*放在模式的开头和结尾。