0

有人可以解释为什么下面打印5 matches

object RegExer extends App {
val PATTERN = """([5])""".r

print("5" match {
case PATTERN(string) => string + " matches!"
case _ => "No Match!"
})    
}

这打印No Match!

object RegExer extends App {
val PATTERN = """[5]""".r

print("5" match {
case PATTERN(string) => string + " matches!"
case _ => "No Match!"
})    
}

为什么没有括号的范围行为不起作用?

4

2 回答 2

0

您已明确要求返回单个组的模式:PATTERN(string).

string这是组(正则表达式中的括号)。

您应该使用PATTERN()不带组的模式:

"5" match {
  case string @ PATTERN() => string + " matches!"
  case _ => "No Match!"
}
// String = 5 matches!
于 2013-11-01T12:16:43.243 回答
0

在第二种情况下,您没有定义匹配组。这就是括号在正则表达式匹配中的用途:它们定义应该捕获的内容(在这种情况下,稍后表示为变量)。

于 2013-11-01T12:15:23.407 回答