2015-04-05 112 views
0
val login = "login user=(.*), token=(.*)".r 

"login user=SapHana_dummy token=dummy" match { 
    case login(user, token) => 
    println("success") 
} 

该代码总是抛出MatchError。而不是像预期的那样打印“成功”。为什么?Scala的正则表达式模式匹配不起作用

回答

3

因为你的模式需要一个逗号,在这里:

login user=(.*), token=(.*) 
      ^

这是不是在输入文本。

同时,最大限度地减少回溯,我会使用一个ungreedy量词这里:

login user=(.*?) token=(.*)