有人可以解释下面打印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!"
})
}
为什么没有括号,范围行为不起作用?
答案 0 :(得分:0)
在第二种情况下,您不定义匹配组。这就是在正则表达式匹配中用于括号的内容:它们定义了应该捕获的内容(在这种情况下,稍后表示为变量)。
答案 1 :(得分:0)
您明确要求模式返回单个组:PATTERN(string)
。
string
这里是组(正则表达式中的parentheseis)。
您应该将PATTERN()
用于没有群组的模式:
"5" match {
case string @ PATTERN() => string + " matches!"
case _ => "No Match!"
}
// String = 5 matches!