2015-04-05 107 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=(.*)